Private/Util/Invoke-WithSession.ps1
|
function Invoke-WithSession { [CmdletBinding()] param( [Parameter(Mandatory)][string]$ComputerName, [Parameter(Mandatory)][scriptblock]$ScriptBlock, [pscredential]$Credential ) $sessionParams = @{ ComputerName = $ComputerName; ErrorAction = 'Stop' } if ($Credential) { $sessionParams['Credential'] = $Credential } $session = New-PSSession @sessionParams try { & $ScriptBlock $session } finally { if ($session) { Remove-PSSession -Id $session.Id -ErrorAction SilentlyContinue } } } |