我需要创建一个脚本来对远程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
}
}
答案 0 :(得分:3)
之前我遇到过类似的问题,我通过创建New-PSSession
并将其分配给varialbe解决了这个问题,然后我使用Invoke-Command
和-Session
选项执行所需的命令。
答案 1 :(得分:2)
Enter-PSSession仅供交互式使用(一旦您进入该会话,它只接受来自控制台的输入)。 我能想到的唯一方法就是让这项工作自动化#34;将在目标机器上创建一个自定义远程会话,实现Exit-PSSession的代理功能,并将您的命令放在该函数中。