2016-10-10 10 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 -Class 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 то, что динамически проверяется независимо от того, что письмо exisitn может быть изменено на z: @mathia – FoxZ

0

Видимо вложенный Get-WmiObject вызова не возвращает результат. Там может быть несколько причин для этого:

  • система не имеет оптический привод
  • система имеет оптический привод, но с другой буквой диска
  • произошла ошибка (но вы установите действие ошибки до SilentlyContinue)
  • & hellip;

Вообще лучший подход, чтобы не полагаться на букву диска, но drive type, и -как Mathias отметил в his answer - использовать трубопровод вместо вложенности команды (так что пустые результаты пропускаются вместо бросая ошибку).

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