1

我需要创建一个脚本来对远程 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
    }
}
4

2 回答 2

3

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

于 2013-02-18T14:31:28.393 回答
2

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

于 2013-02-18T14:30:24.423 回答