尝试运行将连接到每个订阅的脚本,并拉出
$azureSubs = Get-AzureRMSubscription
$azureSubs | ForEach-Object {Select-AzureRMSubscription $_ | Out-Null; Get-AzureRMVM | select resourcegroupname, name, licensetype -WarningAction SilentlyContinue}
这有效,但是我想再添加两条信息:“ OSType”和“ VMSize”
如果我执行GET-AZURERMVM,则在运行命令的那个订阅的表中,我需要的两条信息在那里:VmSize和OsType
但是,当我尝试将它们添加到查询中时,这些列为空白。 我相信VmSize在HardwareProfile中,并且OsType在OsProfile中,就像我运行“ Get-AzureRMVM -name(名称)-resourcegroupname(RGname)”一样,然后它显示“硬件配置文件:VMSize”和“ OSProfile: ComputerName,AdminUsername WindowsConfiguration,机密”
最终目标是获得一个脚本,该脚本将为每个订阅显示以下结果:
ResourceGroupName | Name | License Type | VMSize | OS Type
TEST_RG | Test_VM | Windows_Server | DS3_v2 | Windows
Test_RG | Test_VM2 | | DS3_v2 | Linux
等
感谢您的帮助;很抱歉遇到这样一个菜鸟问题。花了很多时间试图解决这个问题...
答案 0 :(得分:0)
您正在select
端寻找类似的内容
select resourcegroupname, name, licensetype, @{Name="VMSize";Expression={$_.HardwareProfile.VmSize}}, @{Name="OsType";Expression={$_.StorageProfile.OsDisk.OsType}}
答案 1 :(得分:0)
类似以下的方法将起作用。 您主要缺少的是calculated properties。 这是使您能够执行一些自定义属性的方法。
一些注意事项:
在您的代码中,您在Select语句上使用了-WarningAction SilentlyContinue
。您需要将其放在Get-AzureRMVM
CmdLet上。
这是我的看法,但是除非您是故意编写单行代码,否则请尝试为代码加更多的代码。这将使其更易于阅读,调试和维护。
这是您编写的代码,已修改为包括计算的属性,并且WarningAction参数设置为Get-AzureRMVM
而不是Select
语句。
$azureSubs = Get-AzureRMSubscription
$Vms = $azureSubs | ForEach-Object {Select-AzureRMSubscription $_ | Out-Null; Get-AzureRMVM -WarningAction SilentlyContinue | select resourcegroupname, name, licensetype, @{Name="VMSize";Expression={$_.HardwareProfile.VmSize}},@{Name="OsType";Expression={$_.StorageProfile.OsDisk.OsType}}}
$Vms | ft
同一件事,带有一定的进度指示,而无需将所有内容强制放在一行上。
$azureSubs = Get-AzureRMSubscription
$Vms = New-Object 'System.Collections.Generic.List[PSObject]'
ForEach ($sub in $azureSubs) {
Select-AzureRMSubscription $sub | Out-Null
Write-Host "Processing Subscription $($sub.Name)".PadRight(50,' ') -ForegroundColor Cyan -NoNewline
[PsObject[]]$items = Get-AzureRMVM -WarningAction SilentlyContinue |
select resourcegroupname,
name,
licensetype,
@{Name="VMSize";Expression={$_.HardwareProfile.VmSize}},
@{Name="OsType";Expression={$_.StorageProfile.OsDisk.OsType}}
Write-Host "($($items.count) retrieved)"
if ($items -ne $null) {
$vms.AddRange($items)
}
}
$vms | Format-Table