导出 (0) 打印
全部展开

将 PowerShell 脚本用作启动任务

更新时间: 2014年5月

你可使用 PowerShell 脚本执行 Web 角色和辅助角色实例的启动任务。Windows PowerShell 脚本可为启动任务提供重要功能和很大的灵活性。

无法直接从 ServiceDefinition.csdef 文件调用 Windows PowerShell 脚本,但可以从启动批处理文件中调用这些脚本。

默认情况下,Windows PowerShell 将不会运行未签名的脚本。除非你对脚本进行签名,否则需要将 Windows PowerShell 配置为运行未签名的脚本。若要运行未签名的脚本,必须将 ExecutionPolicy 设置为 Unrestricted。你使用的 ExecutionPolicy 设置基于 Windows PowerShell 的版本。

可用于角色实例的 Windows PowerShell 版本基于 ServiceConfiguration.csdef 文件中的 osFamily 设置。有关操作系统系列和版本的详细信息,请参阅 Azure 来宾 OS 版本和 SDK 兼容性矩阵

如果你知道角色实例要使用的 Windows PowerShell 版本,则可以使用该特定 Windows PowerShell 版本的参数调用 ExecutionPolicyUnrestricted 的脚本。

如果你不知道当前使用的 Windows PowerShell 版本,则可将逻辑添加到你的启动批处理文件,以便在 ExecutionPolicyUnrestricted 的情况下运行该脚本,而不用考虑 PowerShell 版本。

运行带 -Version 2.0 参数的 Windows PowerShell 2.0 会将该脚本作为 2.0 版脚本执行。但是,运行带 -Version 2.0 的 Windows PowerShell 1.0 将导致 errorlevel 为 -393216 的错误。如果检测到此 errorlevel,则可使用 1.0 语法运行该脚本。

下面是用于调用执行策略为 Unrestricted 的脚本的 startup.cmd 文件示例(无论 Windows PowerShell 的版本如何):

REM   Attempt to set the execution policy by using PowerShell version 2.0 syntax.
PowerShell -Version 2.0 -ExecutionPolicy Unrestricted .\startup.ps1 >> "%TEMP%\StartupLog.txt" 2>&1

IF %ERRORLEVEL% EQU -393216 (
   REM   PowerShell version 2.0 isn't available. Set the execution policy by using the PowerShell version 1.0 calling method.

   PowerShell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
   PowerShell .\startup.ps1 >> "%TEMP%\StartupLog.txt" 2>&1
)

REM   If an error occurred, return the errorlevel.
EXIT /B %errorlevel%

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2015 Microsoft