如何将文件版本添加到包含多个文件名的对象?

如何将文件版本添加到包含多个文件名的对象?

我一直在寻找这个问题的答案,但却找不到如何将创建的由文件名和版本组成的数据集对以及相关的原始 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 才能使其退出执行。

谁能告诉我我做错了什么。

谢谢,

格雷厄姆

相关内容