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

Invoke-AzVMRunCommand

在 VM 上运行命令。

语法

Invoke-AzVMRunCommand
      [-ResourceGroupName] <String>
      [-VMName] <String>
      -CommandId <String>
      [-ScriptPath <String>]
      [-ScriptString <String>]
      [-Parameter <Hashtable>]
      [-AsJob]
      [-DefaultProfile <IAzureContextContainer>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-AzVMRunCommand
      -CommandId <String>
      [-ScriptPath <String>]
      [-ScriptString <String>]
      [-Parameter <Hashtable>]
      [-ResourceId] <String>
      [-AsJob]
      [-DefaultProfile <IAzureContextContainer>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-AzVMRunCommand
      -CommandId <String>
      [-ScriptPath <String>]
      [-ScriptString <String>]
      [-Parameter <Hashtable>]
      [-VM] <PSVirtualMachine>
      [-AsJob]
      [-DefaultProfile <IAzureContextContainer>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

说明

在 VM 上调用运行命令。

示例

示例 1:在 Windows 上调用命令 - 当脚本驻留在远程 Windows VM 上时使用 ScriptPath 参数

Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RunPowerShellScript' -ScriptPath 'sample.ps1' -Parameter @{param1 = "var1"; param2 = "var2"}

调用运行命令“RunPowerShellScript”,并在资源组“rgname”中重写名为“vmname”的 Windows VM 上的脚本“sample.ps1”。 Var1 和 var2 在 sample.ps1 中定义为参数。 参数值只能是字符串类型,脚本负责根据需要将它们转换为其他类型的。

示例 2:在 Windows 上调用命令 - 使用 ScriptString 参数在 Windows VM 上执行 cmdlet

Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RunPowerShellScript' -ScriptString "Set-TimeZone -Name 'Coordinated Universal Time' -PassThru"

此命令调用一个运行命令“RunShellScript”,该命令将使用其关联的参数执行 cmdlet Set-TimeZone。 若要在 Windows VM 上执行短命令,此示例非常有用。

示例 3:在 Windows 上调用命令 - 使用 ScriptString 参数在 Windows VM 上运行脚本块

$ScriptBlock = {
    param(
        [string] $NewTimeZone,
        [string] $NewDate
        )
    Set-TimeZone -Id $NewTimeZone
    Set-Date -Date [DateTime]$NewDate
}

$Script = [scriptblock]::create($ScriptBlock)

Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RunPowerShellScript' -ScriptString $Script -Parameter @{'NewTimeZone' = "UTC"; 'NewDate' = "Dec-8"}

此命令调用在名为“vmname”的远程 Windows VM 上执行脚本块的运行命令“RunShellScript”。 通过脚本块方式,可以在单个调用中使用参数执行多个 cmdlet,还可以节省调用不同 cmdlet 的多个运行命令所需的时间。 参数值只能是字符串类型。

示例 4:在 Linux 上调用命令

export param1=var1 param2=var2
set -- var1 var2 var3

Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -Name 'vmname' -CommandId 'RunShellScript' -ScriptPath 'sample.bash' -Parameter @{"param1" = "var1";"param2" = "var2"}
echo This is a sample bash script
echo Usage 1: Ordered parameters: $0 $1
echo Usage 2: Named exports: $var1 $var2

此命令调用运行命令“RunShellScript”,并重写名为“vmname”的 Linux VM 上的脚本“sample.bash”。 Var1 和 var2 在 sample.bash 中定义为参数。

参数

-AsJob

在后台运行 cmdlet 并返回作业对象以跟踪进度。

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

-CommandId

运行命令 ID。

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

-Confirm

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

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

-DefaultProfile

用于与 Azure 通信的凭据、帐户、租户和订阅。

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

-Parameter

run 命令参数。 将参数指定为要在脚本执行时传递的键/值对。

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

-ResourceGroupName

资源组的名称。

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

-ResourceId

VM 的资源 ID。

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

-ScriptPath

要执行的脚本的路径。 给出此值后,给定脚本将替代命令的默认脚本。 路径应指向本地文件系统的文件。 该命令将加载并发送它以供执行。

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

-ScriptString

要作为字符串执行的脚本。

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

-VM

PS 虚拟机对象。

类型:PSVirtualMachine
别名:VMProfile
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-VMName

虚拟机的名称。

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

-WhatIf

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

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

输入

String

PSVirtualMachine

输出

PSRunCommandResult