创建具有适当范围的函数

时间:2013-02-18 14:08:20

标签: powershell scope

我需要创建一个脚本来对远程PC进行身份验证并访问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 个答案:

答案 0 :(得分:3)

之前我遇到过类似的问题,我通过创建New-PSSession并将其分配给varialbe解决了这个问题,然后我使用Invoke-Command-Session选项执行所需的命令。

答案 1 :(得分:2)

Enter-PSSession仅供交互式使用(一旦您进入该会话,它只接受来自控制台的输入)。 我能想到的唯一方法就是让这项工作自动化#34;将在目标机器上创建一个自定义远程会话,实现Exit-PSSession的代理功能,并将您的命令放在该函数中。