2017-02-24 57 views
0

所以我现在有一个PowerShell脚本,安装各种软件默默在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都是一样的,我必须承认代码也可以工作。

但是,如何有人会判断这种方法?什么是替代品?

感谢

+1

为什么不检查安装程序的返回码? –

+0

我发现安装程序的代码可能会在创建它的工程师上有所不同(其中一个带有字符串,另一个带有错误ID,...) –

回答

1

我建议看看更多的东西像专家教授“的PowerShell应用部署工具包”。 (http://psappdeploytoolkit.com/) 你需要一段时间才能开始,但并不复杂。 它输出日志等。

+0

感谢您的评论 –

2

只是一个说明,我认为这是更多的服务器故障或超级用户的问题。

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

也许我不会推荐这种方法,如果硬件是完全不同的,或者如果没有映像操作系统来运行脚本,我曾经有一个批处理文件来部署客户桌面(回到WinXP的日子),但最终削减它只是检测模型和安装驱动程序,因为维护起来太麻烦了。我也不会推荐这种方法,如果它将由多人维护,或者维护它的人可能/绝对不是长期工作人员。

总体上取决于公司。 DSC当然是一种更专业,更完整的方法,并且更容易被多人维护,所以将它放在他们身上,如果他们不会为部署服务器和培训投入资源,那么您无论如何都没有多少选择。

+0

感谢您的命令,我将明确检查DSC另一次 –