如何更改此powershell脚本以取消选中除以太网以外的Wi-Fi的“允许计算机关闭此设备以节省功率”

时间:2019-06-24 18:46:21

标签: powershell wifi power-management

我有这个脚本,它可以取消选中以太网适配器的复选框,但是无论我如何使用它,我都无法让它为Wi-Fi做同样的事情。

$NICs = Get-WmiObject Win32_NetworkAdapter -filter "AdapterTypeID = '0' AND PhysicalAdapter = 'true' AND NOT Description LIKE '%wireless%' AND NOT Description LIKE '%virtual%' AND NOT Description LIKE '%WiFi%' AND NOT Description LIKE '%Bluetooth%'"
Foreach ($NIC in $NICs)
{
    $powerMgmt = Get-WmiObject MSPower_DeviceEnable -Namespace root\wmi | where {$_.InstanceName -match [regex]::Escape($nic.PNPDeviceID)}
    If ($powerMgmt.Enable -eq $True)
    {
         $powerMgmt.Enable = $False
         $powerMgmt.psbase.Put()
    }
}

尝试删除所有的AND NOT行。 尝试了我在网上找到的其他一些脚本,但无济于事。

$NICs = Get-WmiObject Win32_NetworkAdapter -filter "AdapterTypeID = '0' AND PhysicalAdapter = 'true' AND NOT Description LIKE '%wireless%' AND NOT Description LIKE '%virtual%' AND NOT Description LIKE '%WiFi%' AND NOT Description LIKE '%Bluetooth%'"
Foreach ($NIC in $NICs)
{
    $powerMgmt = Get-WmiObject MSPower_DeviceEnable -Namespace root\wmi | where {$_.InstanceName -match [regex]::Escape($nic.PNPDeviceID)}
    If ($powerMgmt.Enable -eq $True)
    {
         $powerMgmt.Enable = $False
         $powerMgmt.psbase.Put()
    }
}

我想取消选中“网络连接”下Wi-fi适配器电源管理下的“允许计算机关闭此设备以节省电源”框。

3 个答案:

答案 0 :(得分:0)

您可以使用Powershell cmdlet val crewList= mutableListOf<Crew>() myRef.addValueEventListener(object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { for(child in dataSnapshot.children){ val childCrew = child.getValue(Crew::class.java) childCrew?.let { crewList.add(it) } Log.i("crewList", crewList.toString()) //crewList is not empty } } override fun onCancelled(error: DatabaseError) { Log.d("Error", "Failed to read value.", error.toException()) } }) //crewList is empty Log.i("crewlist", crewList.toString()) return crewList.toList() 来标识您的WLAN接口。 为此,您可以使用属性PhysicalMediaType。

在这种情况下,您要搜索WLAN适配器,因此将其与Get-NetAdapter匹配。 对于较旧的操作系统,有时我们必须将其与'Native 802.11'匹配。

要获取所有WLAN适配器,您可以在脚本中使用它:

'Wireless LAN'

答案 1 :(得分:0)

在Windows服务器2016上,您可以在以下位置编辑GPO:计算机配置/策略/管理模板/系统/电源管理/睡眠设置:在连接待机状态下允许网络连接。

您可以尝试启用此设置,并查看其是否有效。

答案 2 :(得分:0)

$NICs = Get-NetAdapter | Where-Object {$_.status -eq 'Up'}

Foreach ($NIC in $NICs)
{
    $powerMgmt = Get-WmiObject MSPower_DeviceEnable -Namespace root\wmi | where {$_.InstanceName -match [regex]::Escape($nic.PNPDeviceID)}
    If ($powerMgmt.Enable -eq $True)
    {
         $powerMgmt.Enable = $False
         $powerMgmt.psbase.Put()
    }
}