【问题标题】:How to invoke PS script stored in File share with azure run-book如何使用 azure run-book 调用存储在文件共享中的 PS 脚本
【发布时间】:2021-12-21 00:19:27
【问题描述】:

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


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


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

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

我试过那个解决方案

"Could not find file" Invoke-AzureRmVMRunCommand 但遇到同样的错误

【问题讨论】:

  • 它是如何通过 cloudshell 工作的?你可以添加那个命令吗?似乎没有任何对存储帐户的引用。
  • 运行手册如何访问存储帐户?
  • @Blue Clouds 我打开了一个云 shell,创建了 ps 脚本并运行上面的命令并给出了脚本的路径并在 VM 中执行
  • 您能否检查将 cmdlet 调用包装在 InlineScript {} 块中是否可以解决问题。您可以尝试类似$ValidationResult = InlineScript { $result = Invoke-AzVmssVMRunCommand -ResourceGroupName $USING:VM.ResourceGroupName -VMName $USING:VM.Name -CommandId "RunPowerShellScript" -ScriptPath $USING:ValidationScript } 添加在上述代码中包含 vmscaleset 属性和实例 id 属性。作为一种解决方法,您还可以使用 Get-AzStorageFileContent cmdlet 下载文件的副本并执行相同的操作。如果有帮助,请告诉我。

标签: azure powershell azure-automation azure-runbook azure-cloud-shell


【解决方案1】:

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

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2020-09-19
    • 2020-10-22
    • 2018-10-24
    • 2016-09-15
    • 2020-02-13
    • 2021-08-24
    相关资源
    最近更新 更多