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-Key: 617238

Url: https://administrator.de/contentid/617238

Printed on: April 19, 2024 at 13:04 o'clock

Member: LeeX01
LeeX01 Oct 29, 2020 at 21:44:20 (UTC)
Goto Top
Hi,

if ist eine Abfrage und keine Schleife.

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

Grüße
Member: erikro
Solution erikro Oct 29, 2020 at 22:11:25 (UTC)
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
Member: Doskias
Solution Doskias Oct 30, 2020 updated at 06:41:35 (UTC)
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
Member: Doskias
Solution Doskias Oct 30, 2020 at 06:46:00 (UTC)
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
Member: TK1987
Solution TK1987 Oct 30, 2020 at 08:12:56 (UTC)
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
Member: erikro
erikro Oct 30, 2020 at 14:44:38 (UTC)
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
Member: Doskias
Doskias Nov 01, 2020 at 20:26:07 (UTC)
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