sheev20
Goto Top

Abfrage des mobilen Netzadapters in PowerShell

Hallo zusammen,

ich arbeite im Moment an einem Skript, dass Daten von der integrierten Festplatte auf das persönliche Netzlaufwerk transferiert. Das Skript soll jedoch überprüfen, ob das Notebook momentan mobile Daten verwendet und wenn dies der Fall ist, das Skript terminieren. Grund dafür ist, dass die zu transferierende Dateien zum Teil mehrere Gigabyte groß sein können und die User nicht das komplette Datenvolumen für ein Back-Up aufbrauchen.

Mein Problem ist, dass das Skript die Abfrage überspringt und nicht direkt terminiert, wenn mobile Daten aktiviert sind.

#Variable
$mobilfunk = Get-NetAdapter | Where-Object {$_.name -contains "mobilfunk" }| Where-Object {$_.status -eq "Connected"}

#if-Abfrage
if ($mobilfunk -eq $true) {
Write-Output "Back-Up nicht möglich, da sie akutell mobile Daten verwenden. Bitte stellen sie eine erneute Verbindung mit einem anderen Medium her oder wenden Sie sich an einen Systemadministrator."
pause}

Könnt ihr mir bei meinem Denkfehler weiterhelfen, habe hier schon etliche Zeit investiert :/.

Content-ID: 535255

Url: https://administrator.de/forum/abfrage-des-mobilen-netzadapters-in-powershell-535255.html

Ausgedruckt am: 12.04.2025 um 01:04 Uhr

Kraemer
Kraemer 15.01.2020 um 08:57:08 Uhr
Goto Top
BirdyB
BirdyB 15.01.2020 um 08:59:36 Uhr
Goto Top
Moin,

ohne es getestet zu haben:
Probier mal
if ($mobilfunk){...
Das sollte prüfen, ob die Variable gesetzt ist.

VG
Sheev20
Sheev20 15.01.2020 um 09:42:21 Uhr
Goto Top
Hallo nochmal,

ich habe jetzt eure beiden Vorschläge umgesetzt, jedoch springt er trotzdem im Skript einfach weiter und kopiert die Daten trotzdem.

Den Befehl per se erkennt er aber er gibt mir einfach nicht die Nachricht aus und springt weiter im Skript statt aufzuhören :/.

Verbesserter Quellcode:

$mobilfunk = Get-NetAdapter | Where-Object {$_.name -contains "Telekom.de" -and $_.status -eq "Connected"}


if ($mobilfunk) {
Write-Output "Back-Up nicht möglich, da sie akutell mobile Daten verwenden. Bitte stellen sie eine erneute Verbindung mit einem anderen Medium her oder wenden Sie sich an einen Systemadministrator."
pause}

Vielen Dank für eure Hilfe face-smile
erikro
erikro 15.01.2020 aktualisiert um 09:54:44 Uhr
Goto Top
Moin,

Zitat von @Sheev20:
$mobilfunk = Get-NetAdapter | Where-Object {$_.name -contains "Telekom.de" -and $_.status -eq "Connected"}

So ward dat nix. face-wink

{$_.name -contains "Telekom.de"}  

heißt: Suche in dem Array $_.name, ob sich darin ein Wert mit exakt "Telekom.de" befindet. Steht da was anderes, dann ist das immer falsch und somit $mobilfunk leer.

{$_.name -like "*Telekom.de*"}  

und so geht's.

hth

Erik
mayho33
mayho33 15.01.2020 um 10:43:47 Uhr
Goto Top
Hi!

Du könntest aber auch den Type aller Network Adapter abfragen und deren connectionstatus. So kannst du ausschließen dass Mobil-Connections verwendet werden ohne deren Namen zu kennen:

https://devblogs.microsoft.com/scripting/using-powershell-to-find-connec ...

Grüße!
Kraemer
Kraemer 15.01.2020 um 11:08:28 Uhr
Goto Top
Zitat von @Sheev20:
Den Befehl per se erkennt er aber er gibt mir einfach nicht die Nachricht aus und springt weiter im Skript statt aufzuhören :/.
ist doch auch kein Wunder.

$mobilfunk = Get-NetAdapter | Where-Object {$_.name -contains "Telekom.de" -and $_.status -eq "Connected"}
$mobilfunk wird hier nicht auf $true/$false gesetzt.

Wenn dir der Name schon bekannt ist, warum dann nicht einfach ein
if ((Get-NetAdapter -Name "WLAN").MediaConnectionState -eq "Connected")  
Bitboy
Bitboy 15.01.2020 um 11:30:06 Uhr
Goto Top
Hi,

Wenn du ein Script beenden willst dann musst du schon den exit Befehl verwenden. Pause pausiert nur und macht dann weiter.
Oder ist das Problem, dass die Abfrage nicht wie gewünscht funktioniert?