在Powershell脚本中实现验证和检查

时间:2017-02-24 10:12:54

标签: validation powershell path filepath

所以我目前有一个Powershell脚本,可以静默安装各种软件

我目前拥有的所有命令都完美无缺:

Start-Process 'C:\Files\Install files\Firefox' -ArgumentList "/S" -Wait
Start-Process 'C:\Files\Install files\Office' -ArgumentList "/s" -Wait
Start-Process 'C:\Files\Install files\Zeb' -ArgumentList "/S" -Wait

我现在想要实现的是“检查安装是否成功”。

我通过检查安装文件来启动程序:

Write-Host "Checking if install files are present..."
if(Test-Path 'C:\Files\Install files\')
{
Write-Host "Files located. Installation will begin"
Write-Host ""
} else
{
Write-Host "Files not located, please check the directory"
Write-Host ""
break
}

由于上面的代码正常工作,我认为我可以安装我的软件一样吗?但是使用软件目录作为测试路径函数:

Write-Host "Installing Firefox"
Start-Process 'C:\Files\Install files\Firefox' -ArgumentList "/S" -Wait
if (Test-Path C:\Program Files(x86)\Firefox)
{
Write-Host "Firefox succesfully installed!"
}else
{
Write-Host "Error, FireFox hasn't been installed"
}

....并继续这样做其他程序

我想'为什么不呢?'因为所有的PC都是相同的,我必须承认代码也有效。

但是有人会怎么判断这种方法呢?什么是替代品?

由于

2 个答案:

答案 0 :(得分:2)

请注意,我认为这更像是服务器故障或超级用户的问题。

有些高端工具如Desired State Configuration可以处理所有这些,但它实际上取决于环境。我们在一个非现场数据中心内构建独立服务器,它更方便,设置更少,只需安装一个脚本即可安装和配置无法成像的所有内容。当然需要两个小时才能完成,但它无人值守,而且由于操作系统是从模板安装的,我们保证它们都完全一样。

如果硬件完全不同或者如果没有对操作系统进行成像以运行脚本,我可能不推荐这种方法,我曾经有一个批处理文件来部署客户桌面(回到WinXP时代),但最终还是把它切掉了直到检测模型并安装驱动程序,因为维护太麻烦了。如果不是由一个人维护,或者维护它的人可能/绝对不是长期工作人员,我也不会推荐这种方法。

总的来说,这取决于公司。 DSC当然是一种更专业,更完整的方法,更容易由多人维护,所以把它交给他们,如果他们不会为部署服务器和培训投入资源那么你就没有多少选择。

答案 1 :(得分:1)

我建议您查看更专业的内容,例如" PowerShell App Deployment Toolkit"。 (http://psappdeploytoolkit.com/) 你需要一些时间才能开始,但并不复杂。 它输出日志等。