1

Я нашел ответ на этот вопрос, но не могу выяснить, как добавить в объект, создавая пару данных, имя и версию файла и соответствующее исходное имя файла 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, чтобы заставить его выйти из выполнения.

Может кто-нибудь, пожалуйста, посоветуйте, что я делаю не так.

Спасибо,

Грэхем

0