2013-02-18 4 views
1

Мне нужно создать скрипт для аутентификации на удаленном ПК и доступа к консоли PS. Он действительно работает, но мне нужно выполнить несколько команд, когда мне нужно завершить этот сеанс.создать функцию с правильной областью

Поэтому я создаю функцию STOP для вызова сеанса, но ее нельзя использовать. Является ли это проблемой области видимости (потому что она находится внутри оператора if)? Если я вручную создаю ту же функцию, а затем попытаюсь называть ее ... Она работает!

# get connection parameters 
$credential = Get-Credential -Credential xxx 
$remote_PC = Read-Host "Insert the server name or IP (Q to abort): " 
# connect 
if (someKindOfCheck) { 
    Enter-PSSession -ComputerName $remote_PC -Credential $credential 
    # some commands 
    function STOP { 
     Exit-PSSession; 
     # some commands 
    } 
} 

ответ

2

Enter-PSSession предназначен только для интерактивного использования (после того, как вы ввели этот сеанс, он принимает входные данные только от консоли). Единственный способ, с помощью которого я могу думать, что эта работа «автоматически» будет заключаться в создании пользовательского сеанса удаленного доступа на целевой машине, который реализует прокси-функцию для Exit-PSSession и помещает ваши команды в эту функцию.

3

Я сталкивался с подобным вопросом раньше, и я решил ее путем создания New-PSSession и присвоения его varialbe, я затем использовать Invoke-Command с -Session возможностью выполнять необходимые команды.