powershell - 函数完成后 Import-PsSession 不可用

标签 powershell

我有一个创建远程 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/

相关文章:

loops - 使用输入变量的PowerShell循环

powershell - 使用 PowerShell 将文件从 tfs 版本控制复制到目录

powershell - 如何计算powershell变量中的行数

powershell - PowerShell Skype for Business服务器端对变量的过滤

powershell - Azure 外部负载均衡器 - 使用 PowerShell 添加 LB 规则

powershell - 如何使用 PowerShell 从 Azure 函数查询 Azure 表

powershell - 简单示例 : Expressions are only allowed as the first element of a pipeline

PowerShell Add-WindowsFeature 无法识别

azure - 为什么azure子网没有subnet.id参数

powershell - 在更改路径时执行 PowerShell 函数