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