Powershell — Сообщение об ошибке InputObject при передаче переменной get-диска

#windows #powershell

Вопрос:

Я помещаю get-диск в переменную, и когда я хочу передать ее с помощью clear-disk, я получаю сообщение об ошибке InputObject is null. Но если я запускаю две строки кода по отдельности в консоли Powershell, это работает. переменная $USB_Drive не используется нигде, кроме как в этих двух строках. Есть идеи, что это может быть?

Здесь две строки:

 $USB_Drive = Get-Disk | Where-Object BusType -eq USB | Out-GridView -Title 'Select USB Drive' -OutputMode Single  $Results = $USB_Drive | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false -Passthru | New-partition -UseMaximumSize -IsActive -AssignDriveLetter | Format-Volume -FileSystem NTFS  

И сообщение об ошибке:

 ERROR: Clear-Disk : Das Argument für den Parameter "InputObject" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie einen gültigen Wert für das Argument ERROR: an, und führen Sie den Befehl erneut aus. ERROR: In C:UsersjorisbiegDocumentsSAPIENPowerShell StudioProjectsISODRIVEISODRIVE.Run.ps1:196 Zeichen:17 ERROR:   ... USB_Drive | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false -Passth ... ERROR:   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ERROR:   CategoryInfo : InvalidData: (:) [Clear-Disk], ParameterBindingValidationException ERROR:   FullyQualifiedErrorId : ParameterArgumentValidationError,Clear-Disk ERROR:  

Ответ №1:

Вы пытаетесь сохранить выходные данные out-gridview в своей переменной, это будет ближе к тому, что вам нужно:

 # Store the usb drive $USB_Drive = Get-Disk | Where-Object BusType -eq USB  # display the usb drive $USB_Drive | Out-GridView -Title 'Select USB Drive' -OutputMode Single  $Results = $USB_Drive | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false -Passthru | New-partition -UseMaximumSize -IsActive -AssignDriveLetter | Format-Volume -FileSystem NTFS  

Ответ №2:

Спасибо за ответ, однако это произошло потому, что переменная не была создана глобально. Если я создам переменную $global:USB_Drive Global, все будет работать нормально.