如何连接到Azure Windows VM并使用PowerShell运行远程脚本?

时间:2017-07-19 16:25:55

标签: powershell azure remote-access

我熟悉Linux环境并使用SSH从我的桌面运行远程脚本和程序以及自动脚本。

我希望在Azure帐户上拥有与Windows VM类似的工作流程。但是,我无法找到有关如何构建本地PowerShell脚本的直接说明。

我只需连接到VM并调用其中的一些脚本。

我能找到的最好的将是MS的这本指南 https://docs.microsoft.com/en-us/azure/virtual-machines/windows/winrm

或者这是一篇较旧的博文。

http://fabriccontroller.net/using-remote-powershell-with-windows-azure-virtual-machines/

2 个答案:

答案 0 :(得分:3)

根据您的描述,我们可以使用New-Pssession执行脚本来停止/启动服务,如下所示:

$username = 'jason'
$pass = ConvertTo-SecureString -string 'password' -AsPlainText -Force
$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $username, $pass
$s = New-PSSession -ConnectionUri 'http://23.99.82.2:5985' -Credential $cred -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck)
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell}

结果如下: enter image description here enter image description here

另一种方法,我们可以使用Azure自定义脚本扩展来运行脚本,我们可以将脚本上传到Azure存储帐户,并使用Set-AzureRmVMCustomScriptExtension来设置自定义脚本:

PS C:\> Set-AzureRmVMCustomScriptExtension -ResourceGroupName "ResourceGroup11" -Location "Central US" -VMName "VirtualMachine07" -Name "ContosoTest" -TypeHandlerVersion "1.1" -StorageAccountName "Contoso" -StorageAccountKey <StorageKey> -FileName "ContosoScript.exe" -ContainerName "Scripts"

但是自定义脚本只能运行一次,如果要重新运行此脚本,我们应该使用此命令Remove-AzureRmVMCustomScriptExtension将其删除,然后重新设置它。 有关Azure自定义脚本扩展的详细信息,请参阅此link

答案 1 :(得分:1)

我使用接受的答案遇到了很多麻烦,发现我想在远程执行中使用SSL。我找不到任何简洁的地方,所以这里有什么对我有用。实质上,使用内置的Azure命令在VM上启用远程PowerShell,然后运行安全的远程会话到您心中的内容!

Invoke-AzureRmVMRunCommand -ResourceGroupName $vmResourceGroupName -Name $vmName -CommandId 'EnableRemotePS'
$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $username, $secureStringPassword
$sessionOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck                 
Invoke-Command -ComputerName $ipAddress -Credential $cred -UseSSL -SessionOption $sessionOptions -FilePath $scriptPath