Functions/CommonFunctions.ps1
function Set_Type { param( [Parameter(ValueFromPipeline=$true)] [psobject[]]$InputObject, [string]$TypeName ) process { foreach ($object in $InputObject) { if ($TypeName) { $object.psobject.TypeNames.Insert(0, $TypeName) } $object } } } function Invoke-SessionCommand { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [ScriptBlock]$ScriptBlock, [Parameter()] [Object[]]$ArgumentList, [Parameter()] [System.Management.Automation.Runspaces.PSSession]$Session ) if ($Session) { Write-Verbose "Executing remotely from '$($Session.ComputerName)'.." Invoke-Command -Session $Session -ArgumentList $ArgumentList -ScriptBlock $ScriptBlock | Add-Member -NotePropertyName Session -NotePropertyValue $Session -Force -PassThru } else { Write-Verbose 'Executig locally..' Invoke-Command -ArgumentList $ArgumentList -ScriptBlock $ScriptBlock } } |