Das Ziel besteht darin, ein Skript auszuführen, das PowerShell-Remoting auf eine Liste von Hosts prüft. Ich möchte, dass der Status jedes Jobs in einer einzigen Zeile und nicht in separaten Zeilen in Host und Status angezeigt wird. Ich würde gerne sehen:Wie kann ich die Ausgabezeile als String- oder Objektfelder formatieren?
server1 Completed server2 Completed server3 Failed server4 Completed
Ich versuchte {"$_.Location, $_.State"}
als letzte Zeile mit, aber das scheint die Typen statt Werte zu emittieren.
Muss ich ein New-Object
erstellen, um diese zwei Felder zu enthalten, um auszugeben?
Ja, es ist Overkill zu verwenden-AsJob auf so eine kleine Anfrage. Das nächste Ziel ist es, etwas zu bauen, das lang laufende Jobs startet.
Haben Sie Vorschläge zum Formatieren der Ausgabe? Oder über irgendetwas anderes hier, das nicht PowerShell-ic ist.
$server_list = @(
'server1'
,'server2'
,'server3'
,'server4'
)
$outfile = ".\get-psversions.csv"
$server_list |
ForEach-Object {
$thishost = $_
Try {
$current_host = $_
$v = Invoke-Command -ComputerName $current_host {$PSVersionTable.PSVersion} -ErrorAction Stop -AsJob
}
Catch
{
$v = New-Object -TypeName "System.Version"
$v | Add-Member -MemberType NoteProperty -Name PSComputerName -Value "$thishost connect failed"
}
$v
}
Get-Job | Wait-Job | ForEach-Object {$_.Location, $_.State}
PS X:\Scripts\PSAutomation> .\get-v2.ps1 Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 390 Job390 RemoteJob Running True server1 $PSVersionTable.PSVersion 392 Job392 RemoteJob Running True server2 $PSVersionTable.PSVersion 394 Job394 RemoteJob Running True server3 $PSVersionTable.PSVersion 396 Job396 RemoteJob Running True server4 $PSVersionTable.PSVersion server1 Completed server2 Completed server3 Failed server4 Completed
Vielen Dank. Dies erklärt mehrere Dinge. – lit