在Powershell脚本中运行时,Invoke-AzureRmVMRunCommand命令显示错误的输出 [英] Invoke-AzureRmVMRunCommand command displaying wrong output when run in powershell script
问题描述
我正在尝试运行下面的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屋!