Не удалось запустить Compare-Object в Windows 10

Я пытаюсь запустить Compare-Object для смонтированного ISO. Эти 3 строчки идеально подходят для версии 4.0 в Windows 8.1.

$Driveletters = (Get-Volume).Driveletter
$SetupDriveLetter = (Mount-DiskImage -ImagePath "Mypath")
$ISODriveletter = (Compare-Object -ReferenceObject $DriveLetters -DifferenceObject (Get-Volume).DriveLetter).InputObject 

Когда я запускаю те же строки в Windows 10, я получаю следующую ошибку. Что я делаю неправильно? Есть ли у кого-нибудь предложения, я был бы очень признателен.

Compare-Object: невозможно привязать аргумент к параметру ReferenceObject, потому что он имеет значение NULL. В строке: 1 символ: 55 + ... ODriveletter = (Compare-Object -ReferenceObject $ DriveLetters -Differ ... + ~~~~~~~~~~~~~ + CategoryInfo: InvalidData: (:) [Сравнить -Object], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorNullNotAllowed, Microsoft.PowerShell.Commands.CompareObjectCommand


person Kristoffer Ekenhammar    schedule 15.01.2016    source источник
comment
У вас есть том без буквы диска?   -  person user4003407    schedule 15.01.2016
comment
К сожалению, нет, но хороший совет. Попробовали это на нескольких машинах с Windows 10 с тем же результатом.   -  person Kristoffer Ekenhammar    schedule 15.01.2016
comment
@KristofferEkenhammar Вы абсолютно уверены? $DriveLetters.Count Совпадает ли количество букв дисков, указанное при вводе "$DriveLetters" в командной строке? Мне трудно поверить, что у вас нет хотя бы одного зарезервированного системного раздела без буквенного обозначения   -  person Mathias R. Jessen    schedule 15.01.2016
comment
Извините, ребята, вы абсолютно правы, у меня есть зарезервированные разделы без букв. Хорошо, я действительно не понимаю, почему это повлияет на меня. Я хочу получить свои буклеты, смонтировать ISO и затем сравнить, какие изменения были внесены. Почему это запрещено на безбуквенных дисках? Просто запустив «$ Driveletters» с возвратом, я получу C, а «$ Driveletters.Count» вернет 3. Есть ли другой способ сделать это?   -  person Kristoffer Ekenhammar    schedule 15.01.2016
comment
Спасибо за помощь, в итоге воспользовались другим способом. Извините за то, что отвлек вас. $ ISO = 'mypath' Mount-DiskImage -ImagePath $ ISO -StorageType ISO $ ISODriveLetter = (Get-DiskImage -ImagePath $ ISO | Get-Volume) .DriveLetter Write-Host (ISO-диск должен быть + $ ISODriveLetter), похоже, теперь работает .   -  person Kristoffer Ekenhammar    schedule 15.01.2016
comment
@ MathiasR.Jessen как указать код в разделе комментариев?   -  person Anthony Stringer    schedule 15.01.2016
comment
Обратные кавычки вокруг вашего фрагмента :-)   -  person Mathias R. Jessen    schedule 15.01.2016


Ответы (1)


Как указано в комментариях, ваш массив $DriveLetters содержит по крайней мере один элемент со значением $null. Вы можете отфильтровать элементы без значения, используя Where-Object:

$DriveLetters = (Get-Volume).DriveLetter |Where-Object { $_ }
person Mathias R. Jessen    schedule 15.01.2016