【发布时间】:2019-04-02 09:49:39
【问题描述】:
我正在尝试运行以下 powershell 脚本
以下脚本用于列出 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 如下
$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'
我正在获取用户列表。
【问题讨论】:
-
这是第三个关于同一件事的问题,请解释它是如何不是
-
第一篇文章我已将其改回原始问题,第二篇文章我已将其删除。这是第 3 篇文章,所以现在不再重复了。
-
Write-Host(只为写入display而设计,不能输出data),执行空格分隔,单行基于简单的.ToString()调用的输出格式,对于复杂的对象通常会导致无用的表示。对于格式丰富的仅显示输出,请改用Out-Host;对于数据,请使用Write-Output或者更好的是 PowerShell 的 implicit 输出功能 - 请参阅 this answer。
标签: azure powershell