newit1
Goto Top

Powershell Test-Connection

Hallo zusammen,

ich habe eine Powershell Skript gebastelt welches bei der Windows Anmeldung ausgeführt wird.

Das Skript soll nur ausgeführt werden, wenn entsprechende Server vom Client aus erreichbar sind.
Dies wollte ich mit "Test Connection" einbauen.

Test-Connection server1, server  -Count 2

Wie kann ich diese Test Connection in eine Schleife einbauen?

IF Test-Connection ok then Skript starten else stop


Danke für eure Hilfe!

Content-ID: 617238

Url: https://administrator.de/forum/powershell-test-connection-617238.html

Ausgedruckt am: 15.01.2025 um 06:01 Uhr

LeeX01
LeeX01 29.10.2020 um 22:44:20 Uhr
Goto Top
Hi,

if ist eine Abfrage und keine Schleife.

Da gibts mehrere Möglichkeiten, du könntest zum Beispiel $? abfragen.

Grüße
erikro
Lösung erikro 29.10.2020 um 23:11:25 Uhr
Goto Top
Moin,

try {

    Test-Connection server1, server  -Count 2 -ErrorAction Continue
    # Do whatever you want

}

catch {

    # What happens if it doesn't work. 

}

finally {

    # What happens anyway.

}

So sollte es gehen. Ich würde aber überlegen, das in eine Do-While-Schleife zu legen, bis es klappt. Irgenwie so:

do {

    # Hier könnte man z. B. in ein Log schreiben, dass die Verbindung getestet wird und wann.

}
until($(Test-Connection server1, server  -Count 2))

# Und hier der Rest des Skripts.

hth

Erik
Doskias
Lösung Doskias 30.10.2020 aktualisiert um 07:41:35 Uhr
Goto Top
Moin

while(!(Test-Connection Server -count 1 -Quiet))
{}
davor setzen

Der Parameter -Quiet gibt dir "True oder False zurück. durch das ! bedeutet die while-Schleife:

Solange Test-Connection false ist, wird die Anweisung zwischen { und } ausgeführt. Da steht aber nichts drin, also passiert auch nichts. Hier könntest du ggf. ein Logging einbauen, dass die Verbindung nicht da war. Wenn der Ping dann erfolgreich war (also der Ping durch ging), wird die Schleife beendet und das Skript läuft normal weiter.

Die Test-Connection ist mit -quiet allerdings dann positiv, wenn einer der angegebenen Server erreichbar ist. Je nachdem ob es dir ausreicht wenn nur einer der Server angegebenen Server erreichbar ist.

Also bei:
while(!(Test-Connection Server1, Server2 -count 1 -Quiet))
{}

geht es weiter sofern einer der beiden verfügbar ist.

Gruß
Doskias
Doskias
Lösung Doskias 30.10.2020 um 07:46:00 Uhr
Goto Top
Zitat von @erikro:
So sollte es gehen. Ich würde aber überlegen, das in eine Do-While-Schleife zu legen, bis es klappt. Irgenwie so:

> do {
> 
>     # Hier könnte man z. B. in ein Log schreiben, dass die Verbindung getestet wird und wann.
> 
> }
> until($(Test-Connection server1, server  -Count 2))
> 
> # Und hier der Rest des Skripts.
> 

hth

Erik
Moin

Hier hast du (genau wie bei meiner Idee) aber auch dass Problem, dass die Schleife unterbrochen sobald einer der angegebenen Server erreichbar ist.

Gruß
Doskias
TK1987
Lösung TK1987 30.10.2020 um 09:12:56 Uhr
Goto Top
Moin,

Zitat von @Doskias:
Hier hast du (genau wie bei meiner Idee) aber auch dass Problem, dass die Schleife unterbrochen sobald einer der angegebenen Server erreichbar ist.
einfach an 2 Bedingungen knüpfen und gut ist.
do { <# whatever  #> }
until( (Test-Connection server1 -count 1 -EA si) -and  (Test-Connection server2  -Count 1 -EA si) )

Gruß Thomas
erikro
erikro 30.10.2020 um 15:44:38 Uhr
Goto Top
Moin,

Zitat von @Doskias:
Hier hast du (genau wie bei meiner Idee) aber auch dass Problem, dass die Schleife unterbrochen sobald einer der angegebenen Server erreichbar ist.

Das war doch so vom TO gefordert. face-wink Vielleicht machen ja beide das Gleiche und einer reicht.

Liebe Grüße

Erik
Doskias
Doskias 01.11.2020 um 21:26:07 Uhr
Goto Top
Selber Moin face-smile

Zitat von @erikro:
Das war doch so vom TO gefordert. face-wink Vielleicht machen ja beide das Gleiche und einer reicht.

Klar. Seine Test-Connection macht das gleiche, aber ich woltle an der Stelle auf Nummer sicher gehen. Grade weil er sich mit Schleifen offenbar nicht so auskennt face-smile

Da war ich mir bei der Aussage:
Das Skript soll nur ausgeführt werden, wenn entsprechende Server vom Client aus erreichbar sind.

Dann nicht mehr so sicher. Wenn entsprechende Server vom Client aus erreichbar sin ist sprachlich nicht das gleiche wie wenn einer der beiden Server erreichbar ist.

Gruß
Doskias