Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
使用 连接的计算机的运行命令的 PowerShell 命令,可以在已启用 Arc 的虚拟机上远程安全地执行脚本或命令,而无需通过远程桌面协议或 SSH 直接连接到它们。
本文提供了使用多个 PowerShell 命令的示例,可帮助你了解如何使用 PowerShell 在已启用 Arc 的服务器上执行脚本或命令。
- 已启用 Arc 的服务器上的 Connected Machine 代理版本必须为 1.33 或更高版本。
以下示例使用各种与已启用 Arc 的服务器上的运行命令配合使用的 PowerShell 命令。
此命令将脚本传送到计算机进行执行并返回捕获的输出。
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "chinaeast2" -RunCommandName "RunCommandName" -SourceScript "echo Hello World!"
Nota
可以在参数中添加 -SourceScript
多个命令。 使用 ;
分隔每个命令。
示例:-SourceScript "id; echo Hello World!"
此命令将 Connected Machine 代理定向到上传脚本的存储 Blob 的共享访问签名 (SAS) URI,然后指示代理执行脚本并返回捕获的输出。
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "chinaeast2" -SourceScriptUri "< SAS URI of a storage blob with read access or public URI>"
Nota
scriptUri
这是存储 Blob 的共享访问签名(SAS)URI,它必须提供对 Blob 的读取访问权限。 建议 SAS URI 的到期时间为 24 小时。 可以使用 Blob 选项或 SAS 令牌 New-AzStorageBlobSASToken
在 Azure 门户中生成 SAS URI。 如果使用New-AzStorageBlobSASToken
生成 SAS 令牌,则 SAS URI 格式为:base blob URL + "?"
+ 从New-AzStorageBlobSASToken
获得的 SAS 令牌。
此命令返回先前部署的运行命令及其属性的完整列表。
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
此命令检索 Run 命令的当前执行进度,包括最新输出、开始/结束时间、退出代码和执行的终端状态。
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
获取具有实例视图的计算机上的“运行”命令的状态信息。 实例视图包含 Run 命令(成功、失败等)的执行状态、退出代码、标准输出和执行脚本生成的标准错误。 非零退出代码表示执行失败。
Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"
除了其他信息,响应还返回以下字段:
InstanceViewExecutionState
:运行命令脚本的状态。 请查看此状态,了解脚本是否成功。ProvisioningState
:常规扩展预配端到端的状态(扩展平台是否能够触发 Run 命令脚本)。
在计算机上创建或更新运行命令,并将标准输出和标准错误消息流式传输到输出和错误追加 blob。
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" - MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "chinaeast2" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Nota
输出和错误 Blob 必须是 AppendBlob 类型,其 SAS URI 必须提供对 Blob 的读取、追加、创建和写入访问权限。 SAS URI 建议过期时间为 24 小时。 如果输出或错误 blob 不存在,则会创建一个 AppendBlob 类型的 blob。 可以使用 blob 的选项在 Azure 门户上生成 SAS URI,也可以使用 New-AzStorageBlobSASToken
生成 SAS 令牌。
使用RunAsUser
和RunAsPassword
参数,以不同用户身份在计算机上创建或更新 Run 命令。
在使用这些参数之前,需要:
- 请与计算机的管理员联系,并确保用户有权访问计算机。
- 确保用户有权访问 Run 命令访问的资源。 示例:目录、文件、网络等。
- 在 Windows 计算机上,确保“辅助登录”正在运行。
New-AzMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "chinaeast2" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
使用执行 cmdlet
的客户端计算机上的本地脚本文件在计算机上创建或更新运行命令。
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -VMName "MyMachine" -RunCommandName "MyRunCommand" -Location "chinaeast2" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
用于 ProtectedParameter
将任何敏感输入传递给脚本,例如密码或密钥。
$privateParametersArray = @{name='inputText';value='privateParam1value'}
New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "chinaeast2" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray
用于捕获 inputText 的示例脚本:
param ([string]$inputText)
Write-Output $inputText
也可以使用类似的方式 Parameter
传递公共参数。
Windows - 将参数和 ProtectedParameter 传递给与以下示例类似的脚本:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value
Linux - 一个命名为
Parameter
的组件及其值被设置为环境配置,并且应该能在 PowerShell 脚本中访问。 对于无名称自变量,请向名称输入传递一个空字符串。 无名称参数传递给类似于以下示例的脚本:myscript.sh publicParam1value publicParam2value secret1value secret2value
删除以前部署在计算机上的运行命令资源。 如果脚本执行仍在进行中,则执行将终止。
Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"