Команда Invoke-AzureRmVMRunCommand, отображающая неверный вывод при запуске в сценарии powershell - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь запустить приведенный ниже скрипт powershell

Приведенный ниже скрипт используется для вывода списка локальных пользователей на виртуальной машине


$subscriptions=Get-AzSubscription -SubscriptionId "##################"

foreach ($subscription in $subscriptions){

Select-AzSubscription -SubscriptionId $subscription.SubscriptionId

$instances=Get-AzVM -Status | Select-Object Name,PowerState,ResourceGroupName ,@{l='osType';e={$\_.StorageProfile.osDisk.osType}}

foreach ($instance in $instances){

    Write-Host $instance.Name.Name

    Write-Host $instance.osType

    if($instance.osType -eq "Windows"){

        Write-Host "Windows server"

        if($instance.PowerState -eq "VM running"){
$users=Invoke-AzVMRunCommand -ResourceGroupName $instance.ResourceGroupName -Name $instance.Name -CommandId 'RunPowerShellScript' -ScriptPath 'C:\Users\tushar.raichand\Desktop\sample.ps1'

Write-Host $users

Write-Host "####################################################"

foreach($user in $users){

Write-Host $user

}

        }

    }

    else{

        if($instance.PowerState -eq "running"){
Write-Host "Linux server"

        }



    }

}
}

Sample.ps1 как показано ниже


$output = Get-LocalUser

Write-Output $output

$output

Выходные данные, которые я получаю для Invoke-AzVMRunCommand, равны


Microsoft.Azure.Commands.Compute.Automation.Models.PSRunCommandResult

Где, когда я просто запускаю эту команду в консоли


Invoke-AzVMRunCommand -ResourceGroupName $instance.ResourceGroupName -Name $instance.Name -CommandId 'RunPowerShellScript' -ScriptPath 'C:\Users\tushar.raichand\Desktop\sample.ps1'

Я получаю список пользователей.

1 Ответ

1 голос
/ 03 апреля 2019

Ну, я могу воспроизвести вашу проблему. Проблема была вызвана Write-Host $users, вам нужно изменить на Write-Output $users.

enter image description here

Sample :

$users=Invoke-AzVMRunCommand -ResourceGroupName $instance.ResourceGroupName -Name $instance.Name -CommandId 'RunPowerShellScript' -ScriptPath 'C:\Users\joyw\Desktop\sample.ps1' 
Write-Output $users

enter image description here

Помимо , в вашем скрипте есть несколько мелких ошибок, e={$\_.StorageProfile.osDisk.osType} должно быть e={$_.StorageProfile.osDisk.osType}. Write-Host $instance.Name.Name должно быть Write-Host $instance.Name, этого достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...