2

我想将字母从 D 更改为 Z:

Set-WmiInstance -InputObject ( Get-WmiObject -Class Win32_volume -Filter "DriveLetter = 'd:'" ) -Arguments @{DriveLetter='Z:'}

错误:

Set-WmiInstance:无法将参数绑定到参数“InputObject”,因为它是
无效的。
在行:1 字符:30
+ Set-WmiInstance -InputObject (Get-WmiObject -Class Win32_volume -Filter "DriveL ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
    + CategoryInfo : InvalidData: (:) [Set-WmiInstance], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SetWmiInstance
4

3 回答 3

4

发生该错误是因为 WMI 查询没有返回任何内容(可能是因为 没有安装设备D:)。

为避免这种情况,请改用管道:

Get-WmiObject -Class Win32_volume -Filter "DriveLetter = 'd:'" |Set-WmiInstance -Arguments @{DriveLetter='Z:'}

如果Get-WmiObject不返回任何内容,则Set-WmiInstance不会运行并且您不会有任何错误

于 2016-10-10T18:42:21.543 回答
1

显然嵌套Get-WmiObject调用不返回结果。这可能有多种原因:

  • 系统没有光驱
  • 系统有一个光驱,但驱动器号不同
  • 发生错误(但您将错误操作设置为SilentlyContinue

通常,更好的方法是不依赖驱动器号,而是驱动器类型,并且 - 正如 Mathias 在他的回答中指出的那样- 使用管道而不是嵌套命令(以便跳过空结果而不是抛出错误) .

Get-WmiObject -Class Win32_volume -Filter 'DriveType=5' |
  Select-Object -First 1 |
  Set-WmiInstance -Arguments @{DriveLetter='Z:'}
于 2016-10-10T19:03:38.523 回答
0

试试这个 CD-ROM 更新 Powershell 代码,

# Set CD/DVD Drive to A:
$cd = $NULL
$cd = Get-WMIObject -Class Win32_CDROMDrive -ComputerName $env:COMPUTERNAME -ErrorAction Stop
if ($cd.Drive -eq "D:")
{
   Write-Output "Changing CD Drive letter from D: to A:"
   Set-WmiInstance -InputObject ( Get-WmiObject -Class Win32_volume -Filter "DriveLetter = 'd:'" ) -Arguments @{DriveLetter='a:'}
}
于 2021-12-02T15:36:36.740 回答