首页 > 解决方案 > 如何使用 azure run-book 调用存储在文件共享中的 PS 脚本

问题描述

我想调用存储在 Azure 存储帐户中的 PowerShell 脚本来执行 VM 规模集中的命令。我可以通过 cloudshell 调用,但使用 rubbook 它说找不到文件


Invoke-AzVmssVMRunCommand -ResourceGroupName $ResourceGroupName -VMScaleSetName $VirtualMachineScaleSetName -InstanceId $vminstances -CommandId 'RunPowerShellScript' -ScriptPath 'script.ps1'


script.ps1 包含我想在 VMS 中运行的代码

script.ps1 存在于我的存储帐户的 $Home 位置

我试过那个解决方案

“找不到文件” Invoke-AzureRmVMRunCommand但得到同样的错误

标签: azurepowershellazure-automationazure-runbookazure-cloud-shell

解决方案


尝试我在这个问题中提供的第一种方法,即

$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
$ConnectToAzAccount = Add-AzAccount -ServicePrincipal -TenantId $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint

$StorageAccountName = "xxxxxxxxxxxxx"
$StorageAccountKey = "xxxxxxxxxxxxxx=="
$ContainerName = "xxxxxxxxxxxxxxx"
$BlobName_Windows = "samplescript.ps1"
$RG_VM = "xxxxxxxxxxxxxxxxxx"
$VM_Name_Windows = "xxxxxxxxx"
$InvokeCmd_Id_Windows = "RunPowerShellScript"

$AzStorage = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$AzStorageContext = $AzStorage.Context

$GetBlobContent_Windows = Get-AzStorageBlobContent -Container $ContainerName -Blob $BlobName_Windows -Destination ($Env:temp+"/samplescript.ps1") -Context $AzStorageContext -Force
$InvokeRunCmdOutput_Windows = Invoke-AzVMRunCommand -ResourceGroupName $RG_VM -VMName $VM_Name_Windows -CommandId $InvokeCmd_Id_Windows -ScriptPath ($Env:temp+"/samplescript.ps1")
$SampleScript_Output_Windows = $InvokeRunCmdOutput_Windows.Value[0].Message
Write-Output $SampleScript_Output_Windows

推荐阅读