2016-10-10 58 views
0

我想从d改变信Z:如何更改CD ROM信?

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

错误:

Set-WmiInstance : Cannot bind argument to parameter 'InputObject' because it is 
null. 
At line:1 char:30 
+ Set-WmiInstance -InputObject (Get-WmiObject -Class Win32_volume -Filter "DriveL ... 
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidData: (:) [Set-WmiInstance], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SetWmiInstance
+0

显然'Get-WmiObject'不返回结果。你需要调查为什么。 –

+0

@AnsgarWiechers可以请你帮忙。 – FoxZ

+0

在那个系统上你有D:驱动器吗?什么是只有'Get-WmiObject类的输出Win32_volume -Filter“DriveLetter ='d:'”' – BenH

回答

2

出现该错误,因为WMI查询不返回任何东西(可能是因为没有安装在设备D:)。

为了避免它,使用管道代替:

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

如果Get-WmiObject不返回任何东西,然后Set-WmiInstance将不会运行,你不会有任何错误

+0

这将检查是否exisint cd rom字母是D什么是动态检查watever exisitn字母可能会将其更改为z:@mathia – FoxZ

0

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

  • 系统没有光驱
  • 系统有光驱,但具有不同的驱动器盘符
  • 发生错误(但你设定的错误行动到SilentlyContinue
  • …

一般一个更好的方法是不依赖于驱动器盘符,但drive type,和 - 作为马蒂亚斯在his answer指出 - 使用管道代替嵌套的命令(使空结果跳过,而不是抛出一个错误)。

Get-WmiObject -Class Win32_volume -Filter 'DriveType=5' | 
    Select-Object -First 1 | 
    Set-WmiInstance -Arguments @{DriveLetter='Z:'} 
相关问题