Was bedeutet "Nicht vorhanden" im Get-NetAdapter Powershell-Cmdlet?

7

Server 2012, Powershell 3.0.

Ich mache einige Arbeiten, bei denen das Aktivieren und Deaktivieren von Netzwerkadaptern automatisiert werden muss. Hier ist ein Beispiel für das, was ich beim Laufen sehe Get-NetAdapter:

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Slot 0 Port 4             HP NC382i DP Multifunction Gigabi...#53      15 Not Present  11-80-1B-94-2A-82          0 bps
Slot 0 Port 2 (TM-2)      HP NC382i DP Multifunction Gigabi...#51      14 Up           11-80-1B-94-27-72         1 Gbps
Team 1 (Team)             Microsoft Network Adapter Multiplexo...      17 Up           11-80-1B-94-2A-72         1 Gbps
Slot 0 Port 3             HP NC382i DP Multifunction Gigabi...#52      13 Disabled     11-80-1B-94-2A-80         1 Gbps
Slot 0 Port 1 (TM-1)      HP NC382i DP Multifunction Gigabi...#50      12 Up           11-80-1B-94-2A-70         1 Gbps

Beachten Sie, dass das Statusattribut nicht binär ist. Es kann aktiv, deaktiviert oder nicht vorhanden sein.

Wenn ich Enable-NetAdapterauf einer Netzwerkkarte mit dem Status "Nicht vorhanden" ausgeführt werde, gibt der Befehl stillschweigend keine Fehlerausgabe zurück, aktiviert jedoch die Netzwerkkarte nicht. Ich habe dann die Netzwerkkarte manuell aktiviert, indem ich mit der rechten Maustaste auf das Symbol in der Systemsteuerung geklickt und Aktivieren ausgewählt habe. Sein Status wurde jetzt mit dem Status Up aktiviert.

Dann lief ich Disable-NetAdapterauf der Netzwerkkarte. Sein Status war jetzt "Deaktiviert".

Jetzt Enable-NetAdapterfunktionierte das Cmdlet wie erwartet und schaltete die Netzwerkkarte ein.

  • Was war also "Nicht vorhanden" und warum konnte Powershell die Netzwerkkarte in diesem Zustand nicht aktivieren, aber ich hatte keine Probleme, sie über die GUI zu aktivieren, aber jetzt scheint sie nur zwischen Aktiviert und Deaktiviert hin und her zu wechseln?
  • Wie bekomme ich "Nicht anwesend" zurück, wenn ich wollte?
  • Wie aktiviere ich eine Netzwerkkarte mit Powershell, wenn sie sich im Status "Nicht vorhanden" befindet?
Ryan Ries
quelle

Antworten:

6

Der Not PresentStatus stammt aus dem InterfaceOperationalStatus der Klasse MSFT_NetAdapter. Es wird für Netzwerkschnittstellen verwendet, die bekannt sind, aber derzeit beispielsweise aufgrund fehlender Hardware nicht verfügbar sind. Ein weiterer Grund könnte sein, dass der Treiber für die Hardware zu diesem Zeitpunkt einfach nicht geladen war. Wenn Sie die Netzwerkkarte über den Geräte-Manager deaktivieren, wird der Treiber entladen. Virtuelle Netzwerkkarten, beispielsweise von VMware Workstation, werden deaktiviert und als "Nicht vorhanden" angezeigt, bis Sie eine virtuelle Maschine starten, die sie verwendet.

Powershell verarbeitet nur Schnittstellen, nicht die Netzwerkkarten selbst Enable-NetAdapter, Disable-NetAdapterund Get-NetAdapter. Wenn das Gerät deaktiviert wurde, müssen Sie wahrscheinlich die Geräteverwaltungs-Cmdlets verwenden

lsmooth
quelle
Vielen Dank, dass Sie mich auf dieses Powershell-Modul hingewiesen haben - es ist wirklich ordentlich und ich hoffe, dass sie es in Zukunft sofort in PS backen. Aber leider scheint es mir nicht zu helfen. Selbst auf der Netzwerkkarte, die Get-NetAdapter als "Nicht vorhanden" bezeichnet, meldet das Cmdlet "Get-Device" immer noch "IsPresent: True". Get-Device zeigt keinen Unterschied zwischen einer Netzwerkkarte, die "vorhanden" ist oder nicht gemäß Get- NetAdapter.
Ryan Ries
Die InterfaceOperationalStatus-Eigenschaft in der MSFT_NetAdapter-Klasse sagt mir jedoch genau, was ich wissen muss. Vielen Dank, dass Sie mich zur richtigen Antwort geführt haben.
Ryan Ries