Invoke-Command

User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

Invoke-Command und Jobs

Beispiel:
Abrufen der Printed Events und auswerten der Events:

$Computers="Host1", "Host2", "Host3", "Host4"
$s=new-pssession-computername$Computers
invoke-command-session$s-scriptblock {
$EventID="307"
$LogFileName="Microsoft-Windows-Printservice/Operational"
$DateFilter= (get-date).AddDays(-1)
$Messages=Get-WinEvent-Computername$_-FilterHashtable @{ logname=$LogFileName;StartTime=$DateFilter; ID=$EventID}

foreach($Messin$Messages){
$Printserver=$_
$PrintTime=$Mess.TimeCreated
$rxRegEx= [regex]"owned by (\S+)"
$rxMatches=$rxRegEx.Match($Mess.Message)
$User=$rxMatches.Groups[1].Value

$rxRegEx= [regex]"was printed on (\S+)"
$rxMatches=$rxRegEx.Match($Mess.Message)
$Printer=$rxMatches.Groups[1].Value

$rxRegEx= [regex]"through port (\S+(?=\.))"
$rxMatches=$rxRegEx.Match($Mess.Message)
$Port=$rxMatches.Groups[1].Value

$rxRegEx= [regex]"Pages printed: (\d+)"
$rxMatches=$rxRegEx.Match($Mess.Message)
$Pages=$rxMatches.Groups[1].Value

$rxRegEx= [regex]"Size in bytes: (\d+)"
$rxMatches=$rxRegEx.Match($Mess.Message)
$Size=$rxMatches.Groups[1].Value

Write-Host"Do what you want..."
Write-Host"$Printserver - $PrintTime - $User - $Printer - $Port - $Pages - $Size"
} -AsJob

 

Job anschauen, wobei 1 für die ID des Jobs steht:

Get-Job 1

Ergebnisse des Jobs anschauen, wobei 1 für die ID des Jobs steht:

Receive-Job 1

Einen Job entfernen:

Remove-Job 1

Weitere Befehle mit Jobs:

Start-Job
Stop-Job
Get-Job
Wait-Job
Receive-Job
Remove-Job