如何从 Powershell runbook 访问 VM 中的脚本文件

How to reach a script file in a VM from Powershell runbook

我在 VM 中有一个脚本文件,我想从 Powershell Runbook 中的 Azure 门户访问它,但找不到该文件。文件手动保存在虚拟机的c:\下。

Azure Runbook 中的代码片段:

IF ($VmAction -eq "Shutdown") {
     try
    {
         Invoke-AzVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VmName -CommandId 'RunPowerShellScript' -ScriptPath 'C:\stopservice.ps1' -ErrorVariable result
         Stop-AzVM -Name $VmName -ResourceGroupName $ResourceGroupName -Force
    }
    catch
    {
        throw "Error: $($_.Exception.Message)"
    }

命令 "Invoke-AzVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VmName -CommandId 'RunPowerShellScript' -ScriptPath 'C:\stopservice.ps1' -ErrorVariable result" 可以在我的计算机上的 powershell 上使用,所以我认为问题可能出在 Azure 中。

脚本文件(c:\stopservice.ps1):

  try
    {
        Stop-Service -Name SSASTELEMETRY
    }

    catch
    {
        throw "Error: $($_.Exception.Message)"
    }

(ps。服务名称用于测试目的,当它工作时将停止不同的服务)

让您的 Azure Automation 运行预订如下所示的东西。它应该可以满足您的要求。

$ServicePrincipalConnection = Get-AutomationConnection -Name 'AzureRunAsConnection'
Add-AzAccount -ServicePrincipal -TenantId $ServicePrincipalConnection.TenantId -ApplicationId $ServicePrincipalConnection.ApplicationId -CertificateThumbprint $ServicePrincipalConnection.CertificateThumbprint
$rgname ="rrrrrrrrrrrrrr"
$vmname ="vvvvvvvvvvvvvv"
$ScriptToRun = "c:\test.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1 
Invoke-AzVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Remove-Item -Path ScriptToRun.ps1

注意:在您 运行 您的 运行 书之前,请确保使用您的资源组名称更新“rrrrrrrrrrrrrrrrrrrr”,并使用您的 VM 名称更新“vvvvvvvvvvvvvv”,并确保您拥有 PowerShell在虚拟机的 C:\ 驱动器中命名为 test.ps1.