我正在分发安装程序,它将打开并运行PowerShell脚本。安装程序将由拥有Windows XP及更高版本的用户使用。
我保证这个脚本会在所有这些版本的Windows上运行/执行吗?我正在寻找批处理文件提供的类似Cross-Windows-Platform互操作性。
我听说过这样的错误:“由于在此系统上禁用了脚本的执行,因此无法加载文件”在这种情况下我该怎么办?如果用户已禁用脚本,这意味着我将需要使用其他语言(可能只是批处理)?
答案 0 :(得分:2)
您引用的错误是由PowerShell安装时的默认执行策略引起的。该消息表明已安装PowerShell ,但默认情况下,出于安全目的,可能会运行哪些脚本非常受限制。
有关此主题的更多信息,请参阅this article。
如果您要在安装程序中使用PowerShell,请将其作为软件系统要求的一部分。我找不到任何明确表示你可以用你的应用程序重新分发PowerShell的东西,但值得向微软询问它。
PowerShell并非“保证”在任何比Win7更早的桌面操作系统上,但是它是通过Microsoft Update分发的,并且没有令人信服的理由让用户不安装它。
答案 1 :(得分:2)
如果您管理此环境,请确保在部署脚本之前在XP工作站上安装了PowerShell。还可以选择为powershell配置组策略以启用脚本执行和允许的脚本类型,但这超出了此问题的范围。
如果您没有进入组策略路由,而只是想直接运行脚本,那么在安装程序中,直接调用powershell.exe
并传入以下参数:
powershell.exe -executionpolicy bypass -file \\path\to\script
如果脚本路径是本地路径,则它不必是一个unc路径,这只是一个例子。
答案 2 :(得分:0)
不,PowerShell脚本无法保证在Windows XP或Windows Server 2003上运行。虽然这些平台的PowerShell为available,但默认情况下并未安装。
答案 3 :(得分:0)
不,PowerShell脚本可能无法正常工作,因为在Win XP / 2003上没有预先安装PowerShell。
它包含在XP / 2003管理框架中。 对我来说,我建议改用.bat。