Umleiten Pipelineergebnis in eine eigene Variable
Hallo liebe Community,
ich komme bei folgendem Vorhaben nicht so richtig weiter, es mangelt bei mir leider doch noch an Erfahrung mit der Powershell. Vermutlich ist das ganz einfach....
Ich möchten den nachfolgendenCode-Schnipsel so modifizieren, dass das Ergebnis am Ende der Pipeline von Attibut Reachable (true oder false) des Test-Connection commandlets in einem Array (connectionResult[..]) landet.
Das Array soll genaus viele elemente haben, wie die Anzahl von $counts und vom Typ Typ Bool sein.
Auf der Konsole sieht die Ausgabe ja so aus:
ComputerName Reachable
---------------
192.168.178.1 True
192.168.178.1 True
192.168.178.1 True
192.168.178.1 True
Könnt ihr mir weiterhelfen?
ich komme bei folgendem Vorhaben nicht so richtig weiter, es mangelt bei mir leider doch noch an Erfahrung mit der Powershell. Vermutlich ist das ganz einfach....
Ich möchten den nachfolgendenCode-Schnipsel so modifizieren, dass das Ergebnis am Ende der Pipeline von Attibut Reachable (true oder false) des Test-Connection commandlets in einem Array (connectionResult[..]) landet.
Das Array soll genaus viele elemente haben, wie die Anzahl von $counts und vom Typ Typ Bool sein.
[int]$counts = 4
[bool[]] $connectionResult = $false,$true,$false,$false
Test-Connection -ComputerName 192.168.178.11 -Count $counts -AsJob | Get-Job | Receive-Job -Wait | Select-Object @{Name='ComputerName';Expression={$_.Address}},@{Name='Reachable';Expression={if ($_.StatusCode -eq 0) { $true } else { $false }}} | ft -AutoSize
Auf der Konsole sieht die Ausgabe ja so aus:
ComputerName Reachable
---------------
192.168.178.1 True
192.168.178.1 True
192.168.178.1 True
192.168.178.1 True
Könnt ihr mir weiterhelfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 561985
Url: https://administrator.de/contentid/561985
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
ich hoffe, ich hab dein Vorhaben richtig verstanden, wenn ja, wäre das folgendermaßen zu lösen:
Wenn du das gesamte Ergebnis als Objekt haben willst, musst du nur die runden Klammern + das ".Reachable" wegnehmen. Dann hast du in $result das gesamte Ergebnis.
Meintest du das so?
Viele Grüße
Toni
ich hoffe, ich hab dein Vorhaben richtig verstanden, wenn ja, wäre das folgendermaßen zu lösen:
[int]$counts = 4
[bool[]] $connectionResult = $false,$true,$false,$false
$result = (Test-Connection -ComputerName 192.168.178.11 -Count $counts -AsJob | Get-Job | Receive-Job -Wait | Select-Object @{Name='ComputerName';Expression={$_.Address}},@{Name='Reachable';Expression={if ($_.StatusCode -eq 0) { $true } else { $false }}}).Reachable
$result
Wenn du das gesamte Ergebnis als Objekt haben willst, musst du nur die runden Klammern + das ".Reachable" wegnehmen. Dann hast du in $result das gesamte Ergebnis.
Meintest du das so?
Viele Grüße
Toni
Moin,
ich kann dir noch nicht so ganz folgen.
Wenn du folgende Zuweisung machst
kannst du mit
den dazugehörigen Computernamen ermitteln. Über die Eigenschaft .Reachable weißt du, ob dieser Computer erreichbar war oder nicht.
Beispielsweise könntest du auch das $result-Objekt mit einer Foreach-Schleife durchgehen und die einzelnen Einträge überprüfen:
Viele Grüße
Toni
ich kann dir noch nicht so ganz folgen.
Wenn du folgende Zuweisung machst
$result = Test-Connection -ComputerName 192.168.178.11 -Count $counts -AsJob | Get-Job | Receive-Job -Wait | Select-Object @{Name='ComputerName';Expression={$_.Address}},@{Name='Reachable';Expression={if ($_.StatusCode -eq 0) { $true } else { $false }}}
$result.Computername
Beispielsweise könntest du auch das $result-Objekt mit einer Foreach-Schleife durchgehen und die einzelnen Einträge überprüfen:
Foreach($row IN $result)
{
if($row.Reachable -eq $true) { Write-Host $row.Computername " ist erreichbar..." }
}
Viele Grüße
Toni