在Powershell脚本中运行时,Invoke-AzureRmVMRunCommand命令显示错误的输出 [英] Invoke-AzureRmVMRunCommand command displaying wrong output when run in powershell script

查看:39
本文介绍了在Powershell脚本中运行时,Invoke-AzureRmVMRunCommand命令显示错误的输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试运行下面的powershell脚本

I am trying to run the below powershell script

以下脚本用于列出VM中的本地用户

The below script is being used to list local users in a VM


$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如下

Sample.ps1 is as below


$output = Get-LocalUser

Write-Output $output

$output

我为Invoke-AzVMRunCommand获得的输出是

The output i am getting for Invoke-AzVMRunCommand is


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

就像我刚在控制台中运行此命令时一样

Where as when i just run this command in console


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

我正在获取用户列表.

推荐答案

好,我可以重现您的问题.此问题是由 Write-Host $ users 引起的,您需要将其更改为 Write-Output $ users .

Well, I can reproduce your issue. The issue was caused by Write-Host $users, you need to change it to Write-Output $users.

示例:

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

此外,您的脚本有一些小错误, e = {$ \ _.StorageProfile.osDisk.osType} 应该为 e = {$ _.StorageProfile.osDisk.osType} .写主机$ instance.Name.Name 应该是写主机$ instance.Name ,就足够了.

Besides, your script has some small mistakes, e={$\_.StorageProfile.osDisk.osType} should be e={$_.StorageProfile.osDisk.osType}. Write-Host $instance.Name.Name should be Write-Host $instance.Name, it is enough.

这篇关于在Powershell脚本中运行时,Invoke-AzureRmVMRunCommand命令显示错误的输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆