你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Set-AzVMRunCommand

用于创建或更新 run 命令的操作。

语法

Set-AzVMRunCommand
   -ResourceGroupName <String>
   -RunCommandName <String>
   -VMName <String>
   [-SubscriptionId <String>]
   -Location <String>
   [-AsyncExecution]
   [-ErrorBlobManagedIdentityClientId <String>]
   [-ErrorBlobManagedIdentityObjectId <String>]
   [-ErrorBlobUri <String>]
   [-OutputBlobManagedIdentityClientId <String>]
   [-OutputBlobManagedIdentityObjectId <String>]
   [-OutputBlobUri <String>]
   [-Parameter <IRunCommandInputParameter[]>]
   [-ProtectedParameter <IRunCommandInputParameter[]>]
   [-RunAsPassword <String>]
   [-RunAsUser <String>]
   [-ScriptUriManagedIdentityClientId <String>]
   [-ScriptUriManagedIdentityObjectId <String>]
   [-SourceCommandId <String>]
   [-SourceScript <String>]
   [-SourceScriptUri <String>]
   [-Tag <Hashtable>]
   [-TimeoutInSecond <Int32>]
   [-TreatFailureAsDeploymentFailure]
   [-DefaultProfile <PSObject>]
   [-AsJob]
   [-NoWait]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-AzVMRunCommand
   -ResourceGroupName <String>
   -RunCommandName <String>
   -VMName <String>
   [-SubscriptionId <String>]
   -Location <String>
   [-AsyncExecution]
   [-ErrorBlobManagedIdentityClientId <String>]
   [-ErrorBlobManagedIdentityObjectId <String>]
   [-ErrorBlobUri <String>]
   [-OutputBlobManagedIdentityClientId <String>]
   [-OutputBlobManagedIdentityObjectId <String>]
   [-OutputBlobUri <String>]
   [-Parameter <IRunCommandInputParameter[]>]
   [-ProtectedParameter <IRunCommandInputParameter[]>]
   [-RunAsPassword <String>]
   [-RunAsUser <String>]
   [-ScriptUriManagedIdentityClientId <String>]
   [-ScriptUriManagedIdentityObjectId <String>]
   [-Tag <Hashtable>]
   [-TimeoutInSecond <Int32>]
   [-TreatFailureAsDeploymentFailure]
   -ScriptLocalPath <String>
   [-DefaultProfile <PSObject>]
   [-AsJob]
   [-NoWait]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

用于创建或更新 run 命令的操作。

示例

示例 1:使用存储 Blob SAS URL 在 VM 上创建或更新运行命令

Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri "https://myst.blob.core.windows.net/mycontainer/myscript.ps1?sp=r&st=2022-10-27T21:02:35Z&se=2022-10-28T05:02:35Z&spr=https&sv=2021-06-08&sr=b&sig=0I%2FIiYayRwHasfasasfdasdfasdeTsQjLnpZjA%3D"

Location      Name         Type
--------      ----         ----
eastus2euap   MyRunCommand Microsoft.Compute/virtualMachines/runCommands

使用包含 .ps1 脚本的存储 Blob 的 SAS URL 在 Windows VM 上创建或更新运行命令。 请注意,SAS URL 必须提供对 blob 的读取访问权限。 建议 SAS URL 的过期时间为 24 小时。 可以使用 blob 选项在Azure 门户上生成 SAS URL,也可以使用 New-AzStorageBlobSASToken 生成 SAS 令牌。 如果使用 New-AzStorageBlobSASToken 生成 SAS 令牌,则 SAS URL = 基本 Blob URL + “?” + 来自 New-AzStorageBlobSASToken 的 SAS 令牌。

示例 2:使用本地脚本文件在 VM 上创建或更新运行命令。

Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"

Location      Name         Type
--------      ----         ----
eastus2euap   MyRunCommand Microsoft.Compute/virtualMachines/runCommands

使用执行 cmdlet 的客户端计算机上的本地脚本文件在 VM 上创建或更新运行命令。

示例 3:使用脚本文本在 VM 上创建或更新运行命令。

Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"

Location      Name          Type
--------      ----          ----
eastus2euap   MyRunCommand2 Microsoft.Compute/virtualMachines/runCommands

在 VM 上创建或更新运行命令,将脚本内容直接传递到 -SourceScript 参数。 使用“;”分隔多个命令。

示例 4:使用 commandId 在 VM 上创建或更新运行命令。

Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId DisableWindowsUpdate

Location      Name         Type
--------      ----         ----
eastus2euap   MyRunCommand Microsoft.Compute/virtualMachines/runCommands

使用已存在的 commandId 在 VM 上创建或更新运行命令。 可以使用 Get-AzVMRunCommandDocument 检索可用的 commandId。

示例 5:在 VM 上创建或更新运行命令,并将标准输出和标准错误消息流式传输到输出和错误追加 Blob。

Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -OutputBlobUri "https://vivst.blob.core.windows.net/vivcontainer/output.txt?sp=racw&st=2022-10-27T22:18:36Z&se=2022-10-28T06:18:36Z&spr=https&sv=2021-06-08&sr=b&sig=HQAu3Bl%2BKMofYTjMo8o5hasfadsfasdF4jIkRJra4S5FlEo%3D" -ErrorBlobUri "https://vivst.blob.core.windows.net/vivcontainer/error.txt?sp=racw&st=2022-10-27T22:18:36Z&se=2022-10-28T06:18:36Z&spr=https&sv=2021-06-08&sr=b&sig=HQAu3Bl%2BKMofYTjMo8o5h%asfasdfgdT%2F4jasfasdf5FlEo%3D"

Location      Name          Type
--------      ----         ----
eastus2euap   MyRunCommand3 Microsoft.Compute/virtualMachines/runCommands

在 VM 上创建或更新运行命令,并将标准输出和标准错误消息流式传输到输出和错误追加 blob。 请注意,输出和错误 blob 的类型必须为 AppendBlob,其 SAS URL 必须提供对 Blob 的读取、追加、创建、写入访问权限。 建议 SAS URL 的过期时间为 24 小时。 如果输出或错误 blob 不存在,则将创建 AppendBlob 类型的 blob。 可以使用 blob 选项在Azure 门户上生成 SAS URL,也可以使用 New-AzStorageBlobSASToken 生成 SAS 令牌。 如果使用 New-AzStorageBlobSASToken 生成 SAS 令牌,则 SAS URL = 基本 Blob URL + “?” + 来自 New-AzStorageBlobSASToken 的 SAS 令牌。

示例 6:在 VM 上创建或更新运行命令,使用 RunAsUser 和 RunAsPassword 参数以其他用户身份运行 Run Command。

Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -RunAsUser myusername -RunAsPassword mypassword

Location      Name         Type
--------      ----         ----
eastus2euap   MyRunCommand Microsoft.Compute/virtualMachines/runCommands

在 VM 上创建或更新运行命令,使用 RunAsUser 和 RunAsPassword 参数以其他用户身份运行 Run Command。 若要使运行方式正常工作,请与 VM 的管理员联系,并确保在 VM 上添加用户、用户有权访问由运行命令访问的资源(目录、文件、网络等),并且(在 Windows VM 的情况下)VM 上正在运行“辅助登录”服务。

参数

-AsJob

以作业身份运行命令

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-AsyncExecution

可选。 如果设置为 true,则脚本启动后,预配将立即完成,并且不会等待脚本完成。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-DefaultProfile

DefaultProfile 参数不起作用。 如果对其他订阅执行 cmdlet,请使用 SubscriptionId 参数。

类型:PSObject
别名:AzureRMContext, AzureCredential
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ErrorBlobManagedIdentityClientId

用户分配的托管标识的客户端 ID (GUID 值)。 如果未提供,则不应使用 ObjectId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ErrorBlobManagedIdentityObjectId

用户分配的托管标识的对象 ID (GUID 值)。 如果未提供,则不应使用 ClientId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ErrorBlobUri

指定将上传脚本错误流的 Azure 存储 Blob。 使用具有读取、追加、创建、写入访问权限的 SAS URI 或使用托管标识提供对 Blob 的 VM 访问权限。 引用 errorBlobManagedIdentity 参数。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Location

资源位置

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-NoWait

异步运行命令

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-OutputBlobManagedIdentityClientId

用户分配的托管标识的客户端 ID (GUID 值)。 如果未提供,则不应使用 ObjectId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-OutputBlobManagedIdentityObjectId

用户分配的托管标识的对象 ID (GUID 值)。 如果未提供,则不应使用 ClientId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-OutputBlobUri

指定将上传脚本输出流的 Azure 存储 Blob。 使用具有读取、追加、创建、写入访问权限的 SAS URI 或使用托管标识提供对 Blob 的 VM 访问权限。 引用 outputBlobManagedIdentity 参数。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Parameter

脚本使用的参数。 若要构造,请参阅 PARAMETER 属性的 NOTES 部分并创建哈希表。

类型:IRunCommandInputParameter[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ProtectedParameter

脚本使用的参数。 若要构造,请参阅 PROTECTEDPARAMETER 属性的 NOTES 部分并创建哈希表。

类型:IRunCommandInputParameter[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ResourceGroupName

资源组的名称。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-RunAsPassword

在执行 run 命令时,指定 VM 上的用户帐户密码。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-RunAsUser

在执行 run 命令时,指定 VM 上的用户帐户。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-RunCommandName

虚拟机运行命令的名称。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ScriptLocalPath

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ScriptUriManagedIdentityClientId

用户分配的托管标识的客户端 ID (GUID 值)。 如果未提供,则不应使用 ObjectId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ScriptUriManagedIdentityObjectId

用户分配的托管标识的对象 ID (GUID 值)。 如果未提供,则不应使用 ClientId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SourceCommandId

指定预定义内置脚本的 commandId。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SourceScript

指定要在 VM 上执行的脚本内容。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SourceScriptUri

指定脚本下载位置。 它可以是具有读取访问权限或公共 URI 的 Azure 存储 Blob 的 SAS URI。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SubscriptionId

唯一标识 azure 订阅Microsoft的订阅凭据。 此订阅 ID 是每个服务调用的 URI 的一部分。

类型:String
Position:Named
默认值:(Get-AzContext).Subscription.Id
必需:False
接受管道输入:False
接受通配符:False

-Tag

资源标记

类型:Hashtable
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-TimeoutInSecond

执行 run 命令的超时(以秒为单位)。

类型:Int32
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-TreatFailureAsDeploymentFailure

可选。 如果设置为 true,脚本中的任何失败都将失败,并且 ProvisioningState 将标记为“失败”。 如果设置为 false,ProvisioningState 将仅反映运行命令是否由扩展平台运行,则不会指示脚本在脚本失败时是否失败。 如果脚本失败,请参阅 run 命令的实例视图,以查看 executionMessage、输出、错误: https://aka.ms/runcommandmanaged#get-execution-status-and-results

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-VMName

应在其中创建或更新运行命令的虚拟机的名称。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输出

IVirtualMachineRunCommand