首页 > 解决方案 > 从 powershell 脚本导出 CSV

问题描述

我在 powershell 中有一段代码,我将其用作“安装配方”。我使用这个脚本来检查 PC 的准备工作是否良好,以及各种软件是否安装正确。Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force

If ((Test-Path "C:\Program Files\7-Zip") -eq $True) 
   {Write-Host " ~                 7-ZIP : Installation => OK!                  ~" -ForegroundColor Green}
else{Write-Host " ~                7-ZIP : Installation => NOK!                  ~" -ForegroundColor Red}
 
Sleep 3

If ((Test-Path "C:\Program Files (x86)\Adobe\Acrobat Reader DC") -eq $True) 
   {Write-Host " ~             Adobe Reader DC : Install => OK!                 ~" -ForegroundColor Green}
else{Write-Host " ~            Adobe Reader DC : Install => NOK!                 ~" -ForegroundColor Red}

exit

如果安装正常(OK),那么它会生成一个我们存储的值,然后导出到 .CSV 或 .XLSX 文件。如果安装不正常 (NOK),则同上。

你是怎样做的?

谢谢你的帮助

标签: powershellcsvexport

解决方案


一种方法是将每个未安装软件的名称保存到一个数组中以供以后处理。

话虽如此,可以改进有问题的测试路径。与其在这里和那里输入路径,不如将它们存储在一个集合中以便于处理。哈希表工作正常。像这样,

$ht = @{
"7-Zip" = "C:\Program Files\7-Zip"
"Adobe Reader DC" = "C:\Program Files (x86)\Adobe\Acrobat Reader DC"
"FooApp" = "C:\Program Files\FooApp"
}
$failedInstalls = @()
    
foreach($key in $ht.keys){ 
    if(test-path $ht[$key] ) {
        Write-Host " ~ $key : Installation => OK! ~" -ForegroundColor Green
    } else {
        Write-Host " ~ $key : Installation => NOK! ~" -ForegroundColor Red
        $failedInstalls += $key
    }
}
$failedInstalls

这里所做的是将软件名称和路径存储在哈希表中。因此,所有路径的一个中心位置。然后迭代集合并将每个缺失的软件添加到$failedInstalls数组中。更改软件数量是微不足道的,它只需要更改哈希表 - 无需if(test-path...为每个软件声明。

至于如何将数组导出为 XSLX 或 CSV,则留给读者作为练习。


推荐阅读