Ich habe nach einer Antwort auf diese Frage gesucht, kann aber nicht herausfinden, wie in ein Objekt ein Datensatzpaar aus Dateiname und -version und dem zugehörigen ursprünglichen wsp- oder cab-Dateinamen eingefügt werden kann.

Ich habe ein Skript, das sendet, geht durch die wsp-Dateien in einem Ordner, ändert die Erweiterung in cab und gibt dann in csv, den cab-Dateinamen & amp; die darin enthaltenen dlls an csv. Ich wurde gebeten, die DLL-Dateiversion in den DLL-Dateinamen einzufügen, der durch ein Leerzeichen (oder ein anderes Zeichen) getrennt ist, z. myfirst.dll 1.02.03; mysecond.dll 1.2.0.0 usw. gepaart mit dem Dateinamen der Kabine.

Originalskript (ohne Dateiversion):

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

Geändertes Skript:

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

Beim Ausführen - PS sitzt einfach da - muss ich Strg + C eingeben, um die Ausführung zu beenden.

Kann mir jemand bitte mitteilen, was ich falsch mache.

Vielen Dank,

Graham

Graham
quelle