#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, все будет работать нормально.