如何在Powershell脚本中以管理员身份执行Enable PnpDevice



我正在尝试使用Enable-PnpDeviceDisable-PnpDevicePowershell命令自动启用和禁用笔记本电脑的集成图形适配器。我使用的是Windows 10,我有Powershell 7.0.2

这就是我目前所拥有的:

$Device = Get-PnpDevice -FriendlyName "*HD Graphics*"
$DeviceID = $Device.InstanceId
$Status = $Device.Status
If ($Status -eq 'Error') {
runas /user:kato "Enable-PnpDevice -InstanceId $DeviceID -confirm:$false"
} Else {
runas /user:kato "Disable-PnpDevice -InstanceId $DeviceID -confirm:$false"
}

我的帐户有管理员权限,但当脚本使用runas时,如下所示:

runas /user:kato "Enable-PnpDevice -InstanceId $DeviceID -confirm:$false"

我得到以下错误:

RUNAS ERROR: Unable to run - Enable-PnpDevice -InstanceId PCIVEN_8086&DEV_0416&SUBSYS_171D1043&REV_063&11583659&0&10 -confirm:False
2: The system cannot find the file specified.

当我在管理员Powershell会话中运行Enable-PnpDevice时,该命令会正常工作。

我在SO上看到了一些关于使用runas执行程序和脚本的答案,但在这种情况下它不起作用,或者我做错了什么。

是否有一种替代或更好的方式以管理员身份执行Enable-PnpDeviceDisable-PnpDevice

我在powershell脚本(ps1(文件中使用以下(快速且肮脏(代码成功禁用并启用了一个设备。它作为作业运行,脚本假设这些作业成功,因此会使运行的apx失败0.1%。但这可以满足我的需要。

最后的开始睡眠-s 5只是为了让我看到脚本运行了。

首先在powershell中运行Get-PnpDevice命令,然后找到要启用或禁用的设备的名称。在这种情况下;Intel(R(UHD Graphics*"-注意*通配符和字符串的末尾

Get-PnpDevice -FriendlyName "Intel(R) UHD Graphics*" | Disable-PnpDevice -AsJob
Start-Sleep -s 2
Get-PnpDevice -FriendlyName "Intel(R) UHD Graphics*" | Enable-PnpDevice -AsJob
Start-Sleep -s 5

以管理员身份运行代码。我创建了%SystemRoot%\system32\WindowsPowerShell \v1.0\powershell.exe的快捷方式-File"C: \temp\DisableEnable Intel display.ps1"在快捷方式属性中单击"前进"并选择"前进";以管理员身份运行";

相关内容

最新更新