Я нашел ответ на этот вопрос, но не могу выяснить, как добавить в объект, создавая пару данных, имя и версию файла и соответствующее исходное имя файла wsp или cab.
У меня есть скрипт, который отправляет через wsp файлы в папке, изменяет расширение на cab, а затем выводит на csv, имя файла cab и содержащиеся в нем dll на csv. Меня попросили включить версию файла dll с именем файла dll, разделенным пробелом (или каким-либо другим символом), например, myfirst.dll 1.02.03; mysecond.dll 1.2.0.0 и т.д., В сочетании с именем файла cab.
Оригинальный скрипт (без версии файла):
Get-ChildItem C:\WSP\* -Include *.wsp,*.cab | Rename-Item -NewName {$_.basename+".cab"} -PassThru | Foreach {
$files = (expand -d ($_.fullname)) -match "dll$" | Foreach {($_ -split ": ")[1]}
New-Object PsObject -Property @{
CabName = $_.basename
DllNames = $files -join ";"
}
} | Export-Csv C:\WSP\result.csv -NoTypeInformation
Измененный скрипт:
Get-ChildItem C:\WSP\* -Include *.wsp,*.cab | Rename-Item -NewName {$_.basename+".cab"} -PassThru | Foreach {
$files = (expand -d ($_.fullname)) -match "dll$" | Foreach {($_ -split ": ")[1]}
$allinfo=(New-Object PsObject -Property @{
CabName = $_.basename
DllNames = $files -join ";"
})
$version=(Get-Command $files) |$_.FileVersionInfo.fileversion
$allinfo add-member -membertype noteproperty -name Version -value Sversion -join "; "
} | Export-Csv C:\WSP\result.csv -NoTypeInformation
При запуске - PS просто сидит там - я должен набрать ctrl + C, чтобы заставить его выйти из выполнения.
Может кто-нибудь, пожалуйста, посоветуйте, что я делаю не так.
Спасибо,
Грэхем