lhbl2003
Goto Top

LAN Adapter Skript - Computer kann dieses Gerät ausschalten, um Strom zu sparen

Für alle die wissen wollen wie man unter Windows 11 die Option "Computer kann dieses Gerät ausschalten, um Energie zu sparen" / Allow the computer to turn off this device to save power. im Netzwerkadapter per Skript deaktivieren kann, hoffe ich, dass dieses Skript weiterhilft. Denn die beschriebenen Varianten mit dem RegEdit Parameter "PnPCapabilities" funktioniert bei mir nicht.


2024-09-09_13h44_29

# Ersteller:       Denis Hempel
# Datum:           09.09.2024
# Beschreibung:    Dieses Skript deaktiviert bei allen physischen Netzwerkkarten die Option "Computer kann das Gerät ausschalten, um Energie zu sparen" unter:  
#                  "Systemsteuerung" > "Netzwerk- und Freigabecenter" > "Adaptereinstellungen ändern" > "Adapter auswählen" > "Eigenschaften" > "Konfigurieren ..." > "Energieverwaltung" 
#                  Laut Microsoft funktionierte dies wohl unter Windows 7 mit "PnPCapabilities" siehe auch https:{{comment_single_line_double_slash:0}}
#                  Allerdings setzt "PnPCapabilities" nur einige bestimmte Konbinationen wie 0 und 256. Dagegen funktioniert der Wert 280 nicht! 
#                  Eine Analyse mit dem Tool "RegistryChangesView" zeigte, das sich 5 Sekunden nach deaktivierung der Option "Computer kann das Gerät ausschalten, um Energie zu sparen" der Wwert IdleInWorkingState in einem 
#                  anderen Bereich änderte, welcher ausschlaggebend für das aktivieren und deaktivieren der haupt Checkbox ist.
#
# Danksagung:      KurtDeGreeff        - Basisscript auf dem dieses gebaut wurde: https://github.com/KurtDeGreeff/PlayPowershell/blob/master/DisableNetworkAdapterPnPCapabilities.ps1
#                  RegistryChangesView - Schnelles Vergleichstool für RegEdit, so das nicht zu viele unwichtige RegEdit Änderungen aufgezeichnet wurden.: https://www.nirsoft.net/utils/registry_changes_view.html


Function Disable-OSCNetAdapterPnPCapabilities
{
    # Sammel alle physischen Netzwerkadapter zusammen
	# Wenn der Wert der Eigenschaften von adaptersConfigManagerErrorCode 0 ist, bedeutet dies, dass das Gerät ordnungsgemäß funktioniert.
    # Dies gilt auch für aktivierte oder nicht angeschlossene Geräte. 
    # Wenn der Wert der Eigenschaften von configManagerErrorCode 22 ist, bedeutet dies, dass der Adapter deaktiviert wurde.
	$PhysicalAdapters = Get-WmiObject -Class Win32_NetworkAdapter|Where-Object{$_.PNPDeviceID -notlike "ROOT\*" `  
	-and $_.Manufacturer -ne "Microsoft" -and $_.ConfigManagerErrorCode -eq 0 -and $_.ConfigManagerErrorCode -ne 22}   
	
    # Prüfe / Bearbeite alle physischen Netzwerkadapter
	Foreach($PhysicalAdapter in $PhysicalAdapters)
	{
		$PhysicalAdapterName = $PhysicalAdapter.Name # Name Netzwerkadapter

		# Geräte ID
		$DeviceID = $PhysicalAdapter.DeviceID # Prüft die eindeutige Geräte-Identifikationsnummer des Netzwerkadapters in der aktuellen Umgebung.
        $AdapterDeviceNumber = '{0:d4}' -f [int]$DeviceID # Mit nullen auffüllen wie in der RegEdit  

		# Prüfen, ob der Registrierungspfad existiert.
		$KeyPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\$AdapterDeviceNumber"  
		If(Test-Path -Path $KeyPath)
		{
            $DeviceInstanceID = (Get-ItemProperty -Path $KeyPath).DeviceInstanceID # Ist u.a. ein Teil des Pfades um den RegEdit Ordner "Device Parameters\WDF" zu finden  

            # Prüft ob es einen WDF-Pfad in der RegEdit für das Device gibt, andernfalls hat dieses Netzwerk-Device wahrscheinlich keine Energieoption.
            $KeyPath = "HKLM:System\ControlSet001\Enum\$DeviceInstanceID\Device Parameters\WDF"  
		    If(Test-Path -Path $KeyPath)
		    {
			    $IdleInWorkingStateValue = (Get-ItemProperty -Path $KeyPath).IdleInWorkingState
                Try
				{
			        If($IdleInWorkingStateValue -eq $null)
			        {
				    	New-ItemProperty -Path $KeyPath -Name "IdleInWorkingState" -Value 0 -PropertyType DWord | Out-Null  
				    	Write-Host """$PhysicalAdapterName"" - Die Option ""Computer kann das Gerät ausschalten, um Energie zu sparen"" wurde deaktiviert (Parameter Erstellung). Neustart erforderlich um die Anpassung im Netzwerkadapter zu sehen." -ForegroundColor Yellow  
				        
			        }
			        elseif ($IdleInWorkingStateValue -eq 0)
			        {
				        Write-Host """$PhysicalAdapterName"" - Die Option ""Computer kann das Gerät ausschalten, um Energie zu sparen"" wurde bereits deaktiviert. (Parameter Änderung)" -ForegroundColor Green  
			        }
			        elseif ($IdleInWorkingStateValue -ne 0)
			        {	
				    	Set-ItemProperty -Path $KeyPath -Name "IdleInWorkingState" -Value 0 | Out-Null  
				    	Write-Host """$PhysicalAdapterName"" - Die Option ""Computer kann das Gerät ausschalten, um Energie zu sparen"" wurde deaktiviert (Parameter Änderung). Neustart erforderlich um die Anpassung im Netzwerkadapter zu sehen." -ForegroundColor Yellow  
			        }
                }
				Catch
				{
					Write-Host "Das Setzen des Wertes von Eigenschaften von PnpCapabilities ist fehlgeschlagen. GGf. das Script als Administrator ausführen." -ForegroundColor Red  
				}
            }
		}
		Else
		{
			Write-Warning "RegEdit Pfad nicht gefunden: ($KeyPath)"  
		}
	}
}


Für alle die darüber gestolpert sind und dennoch nicht weitergekommen sind, es ging mir genauso ;)
- Aus dieser Anleitung funktioniert Wert 0 und 256 funktionieren, Wert 280 natürlich nicht:
https://learn.microsoft.com/de-de/troubleshoot/windows-client/networking ...

- Es ist Microsoft zu verdanken, dass dieser Beitrag nicht mehr beantwortet werden kann. Sonst wäre die Antwort sicher schon längst da.
https://answers.microsoft.com/en-us/windows/forum/all/power-management-a ...

Danksagung
KurtDeGreeff - Basisscript auf dem dieses gebaut wurde: https://github.com/KurtDeGreeff/PlayPowershell/blob/master/DisableNetwor ...

RegistryChangesView - Schnelles Vergleichstool für RegEdit, sodass nicht zu viele unwichtige RegEdit Änderungen aufgezeichnet wurden (Nein keine Werbung, habs auch das erste Mal benutzt).: https://www.nirsoft.net/utils/registry_changes_view.html

Content-ID: 667987

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

Printed on: September 17, 2024 at 01:09 o'clock

14260433693
14260433693 Sep 09, 2024 updated at 12:25:39 (UTC)
Goto Top
Als Ergänzung :
Gewisse Power Management Optionen von Netzwerkadaptern lassen sich auch mit Disable-NetAdapterPowerManagement selektiv deaktivieren sofern verfügbar.

Gruß