自動清理 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