Я пытаюсь создать сценарий для возврата CSV-списка всех файлов .exe и .dll, хранящихся в папке, с указанием их имени, размера и версии.
Для этого я использую этот сценарий:
$path = 'C:\MyFolder'
Get-ChildItem -Path $path * -include *.dll,*.exe -Recurse |
Select-Object @{Name = 'Name'; Expression = {$_.Name}},
@{Name = 'Size'; Expression = {$_.Length}},
@{Name = 'Modified'; Expression = {$_.LastWriteTime}},
@{Name = 'ProductVersion'; Expression = {($_.VersionInfo.ProductVersion.ToString())}}
# output on screen
$result | Format-Table -AutoSize
# csv file
$result | Export-Csv -Path 'C:\Users\me\Downloads\softwareVersions.csv' -NoTypeInformation
К сожалению, некоторые из моих файлов не имеют версии, поэтому на экране я просто вижу пустое значение в столбце «ProductVersion», но из-за этого я могу Не сгенерировал свой CSV, я получаю сообщение об ошибке:
Export-Csv : Cannot bind argument to parameter 'InputObject' because it is null
Я попытался заменить соответствующую строку (ту, которая имеет версию, которую я предполагаю), чтобы попытаться заменить версию на «Недоступно», если эта информация не найден, но я новичок в коде Powershell, и он не работает ... Вот что я пробовал:
@{Name = 'ProductVersion'; Expression = if(!!$_.VersionInfo.ProductVersion) {'Not available'}else{($_.VersionInfo.ProductVersion)}}
Я надеюсь, что у вас есть вся необходимая информация, так как я м здесь, чтобы попросить вашей помощи, мастера кода: -)
Заранее спасибо за ваше время и ваш ответ !!
Jerome