我有一个创建远程 PS session 的函数。然后我导入 session ,所有导出的命令在代码运行时都可用于其他函数。当函数完成时,会有一个“可用”的 PS session ,但是之后没有任何导出的命令可用。这是一个例子:
Function DoSomething{
$lyncsession = New-CsOnlineSession -Credential (Get-Credential -Message "Authenticate to Skype for Business Online")
$remoteSession = Import-PSSession $lyncsession -AllowClobber | Out-Null
}
如果我想再次运行该函数,我需要拆除旧的 PSSession 并创建一个新的(重新进行身份验证)。
有没有办法在函数内创建 PSSession 并在函数完成时使导出的 cmdlet 可用?
顺便说一句,如果我在函数外部运行命令,这不是问题。
最佳答案
如果您希望函数或脚本在您的 session 范围内运行,您可以点源它。这会将变量放在当前范围内,否则正如您所指出的那样,它们将位于 function scope 中。并在函数完成后不可用。
. DoSomething
否则,您可以手动将函数内的变量限定在不同的范围内。全局和脚本范围的示例
Function DoSomething{
$script:lyncsession = New-CsOnlineSession -Credential (Get-Credential -Message "Authenticate to Skype for Business Online")
$global:remoteSession = Import-PSSession $lyncsession -AllowClobber | Out-Null
}
关于powershell - 函数完成后 Import-PsSession 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013012/