将名称和文件版本保存到csv(Powershell)



我有一些文件夹,里面有一些.exe文件,我想在那里获得名称和文件版本。我可以得到这些,但我有问题把它们保存在一个漂亮的.csv格式。

现在我有:

n1.exe
18.4.0.0
n2.exe
18.4.15.1
n3.exe
18.4.15.1
n4.exe
18.4.15.1

但我想把它保存为:

n1.exe;18.4.0.0;
n2.exe;18.4.15.1;
n3.exe;18.4.15.1;
n4.exe;18.4.15.1;

这是我的密码。我不知道如何用分号完成它

$folder1="D:ServiceTest";
$exeNames = Get-ChildItem -Filter *.exe -Path $folder1 -Name
#Programm Versionen
function efaFileVersionInfo ($efaprograms, $folder) {
foreach ($efaprogram in $efaprograms) {
echo $efaprogram
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("$folder$efaprogram").FileVersion
}
}

efaFileVersionInfo $exeNames $folder1 | Out-File D:Servicefolder1.csv

因此,使用内置的PowerShell函数,您可以通过使用以下内容来实现它:

$folder1 = "D:ServiceTest";
$list = [System.Collections.Generic.List[PSObject]]@();
$exeNames = Get-ChildItem -Filter *.exe -Path $folder1 -Name;
#Programm Versionen
function efaFileVersionInfo ($efaprograms, $folder) {
foreach ($efaprogram in $efaprograms) {
$version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$folder$efaprogram").FileVersion;
if (!([string]::IsNullOrEmpty($version))) { 
$version = $version.Trim();
}
$obj = [PSCustomObject]@{
FileName = $efaprogram
FileVersion = $version
}
$list.Add($obj);
}
}
efaFileVersionInfo $exeNames $folder1;
$list | Export-Csv -Path C:Tempasd.csv -NoTypeInformation -Delimiter ";";

这以这种方式显示数据:

"FileName";"FileVersion"
"7z1900-x64.exe";"19.00"
"azuredatastudio-windows-user-setup-1.27.0.exe";"1.27.0"
"Docker Desktop Installer.exe";"3.2.2.61853"
"Git-2.31.1-64-bit.exe";"2.31.1.1"
"GitHubDesktopSetup.exe";"2.7.2"
"Greenshot-INSTALLER-1.2.10.6-RELEASE.exe";"1.2.10.6"
"ideaIC-2021.1.1.exe";
"kubectl.exe";

如果它是您想要的CSV,您需要让函数输出对象,而不是纯文本。

类似的东西

$folder1  = "D:ServiceTest"
$exeNames = Get-ChildItem -Path $folder1 -Filter '*.exe' -File
# Programm Versionen
function Get-efaFileVersionInfo ($efaprograms, $folder) {
foreach ($efaprogram in $efaprograms) {
# output an object
[PsCustomObject]@{
Name    = $efaprogram.Name
Version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($efaprogram.FullName).FileVersion
}
}
}
# export to CSV file
Get-efaFileVersionInfo $exeNames $folder1 | Export-Csv -Path 'D:Servicefolder1.csv' -Delimiter ';' -NoTypeInformation

注意:我已经更改了函数名称,使其符合默认的PowerShellVerb-Noun约定

最新更新