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

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

Printed on: April 25, 2024 at 11:04 o'clock

Member: Kraemer
Kraemer Jan 15, 2020 at 07:57:08 (UTC)
Goto Top
Member: BirdyB
BirdyB Jan 15, 2020 at 07:59:36 (UTC)
Goto Top
Moin,

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

VG
Member: Sheev20
Sheev20 Jan 15, 2020 at 08:42:21 (UTC)
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
Member: erikro
erikro Jan 15, 2020 updated at 08:54:44 (UTC)
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
Member: mayho33
mayho33 Jan 15, 2020 at 09:43:47 (UTC)
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!
Member: Kraemer
Kraemer Jan 15, 2020 at 10:08:28 (UTC)
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")  
Member: Bitboy
Bitboy Jan 15, 2020 at 10:30:06 (UTC)
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?