自动清理 PSSession 的最佳实践
通过 New-PSsession
cmdlet 创建远程会话时,PSSession 将持续存在,直到当前的 PowerShell 会话结束。这意味着,默认情况下,PSSession
和所有相关资源将继续使用,直到当前 PowerShell 会话结束。
多个活动的 PSSessions
可能会成为资源的压力,特别是对于在单个 PowerShell 会话中创建数百个 PSSessions
的长时间运行或相互链接的脚本。
最佳做法是在完成使用后明确删除每个 PSSession
。 [1]
以下代码模板使用 try-catch-finally
来实现上述目的,将错误处理与安全方式相结合,以确保在完成使用时删除所有创建的 PSSessions
:
try
{
$session = New-PSsession -Computername "RemoteMachineName"
Invoke-Command -Session $session -ScriptBlock {write-host "This is running on $ENV:ComputerName"}
}
catch
{
Write-Output "ERROR: $_"
}
finally
{
if ($session)
{
Remove-PSSession $session
}
}
参考文献:[1] https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/new-pssession