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