Windows

如何從 Azure Function 自動登錄 Azure VM?

  • March 16, 2018

我有一個應用程序,它需要一個網站能夠進行 HTTP 呼叫,該呼叫打開並登錄到 Azure VM。我正在嘗試使用 PowerShell Azure 函式來執行此操作。我可以使用以下功能成功打開/關閉虛擬機:

$secpasswd = ConvertTo-SecureString $env:SP_PASSWORD -AsPlainText -Force;
$mycreds = New-Object System.Management.Automation.PSCredential ($env:SP_USERNAME, $secpasswd)
Add-AzureRmAccount -ServicePrincipal -Tenant $env:TENANTID -Credential $mycreds;
$context = Get-AzureRmContext;
Set-AzureRmContext -Context $context;
# Start VM
Start-AzureRmVM -ResourceGroupName myResourceGroup -Name  myDevice | Out-String

但是在嘗試登錄 VM 時出現權限被拒絕錯誤。我嘗試了以下方法:

$password = ConvertTo-SecureString "myPassword" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("myUsername", $password )

#Enter-PSSession -ConnectionUri https://<public_ip> -Credential $cred -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) -Authentication Negotiate

$Server="<public_ip>"
$User="myUsername"
$Password="myPassword"
cmdkey /generic:TERMSRV/$Server /user:$User /pass:$Password
mstsc /v:$Server

使用標準遠端桌面 GUI 登錄時,我還需要關閉證書提示。我需要做什麼才能使用 Azure 函式自動登錄?

虛擬機正在執行 Windows 10。

編輯:我已經設置了埠,製作了本地證書,並確保為 VM 上的遠端管理設置了 WinRM,並且它正在偵聽 HTTPS。但是,當我在本地機器上嘗試該命令時:

Enter-PSSession -ComputerName 52.166.161.93 -Credential $cred -UseSSL -SessionOption $so

我得到錯誤:

Enter-PSSession:連接到遠端伺服器 52.166.161.93 失敗,並顯示以下錯誤消息:客戶端無法連接到請求中指定的目標。驗證目標上的服務是否正在執行並且正在接受請求。請查閱在目標(最常見的是 IIS 或 WinRM)上執行的 WS-Management 服務的日誌和文件。如果目標是 WinRM 服務,在目標上執行以下命令來分析和配置 WinRM 服務:“winrm quickconfig”。有關詳細資訊,請參閱 about_Remote_Troubleshooting 幫助主題。

編輯:我已驗證該埠已打開並可從 Azure 函式訪問

New-Object Net.Sockets.TcpClient "<public-ip>", 5986

我永遠無法讓 Invoke-Command 為 Azure RM VM 工作。現在已成功實施的最終工作解決方案是在 Azure 自動化帳戶中使用 Invoke-AzureRmVMRunCommand。感興趣的人注意:目前,Azure Powershell Functions 僅支持 AzureRM 版本 1,不支持 Invoke-AzureRmVMRunCommand(即使作為導入模組),但 Azure 自動化執行良好。

首先,您是否確保您的 NSG 規則允許入站 WINRM 流量到該電腦?

此外,您的 Enter-PsSession 命令是錯誤的。您的 -connectionURI 應該只是機器的公共 IP 或名稱,沒有 https,然後您需要使用 -useSSL 標誌。

引用自:https://serverfault.com/questions/893506