如何跨多个订阅从 Azure 导出 VMData
How to export VMData from azure across multiple subscriptions
我已经能够使用下面的代码从单个 Azure 订阅中导出 VMData。
$VMs = Get-AzVM
$vmOutput = $VMs | ForEach-Object {
[PSCustomObject]@{
"VM Name" = $_.Name
"VM Profile" = $_.HardwareProfile.VmSize
"VM Type" = $_.StorageProfile.osDisk.osType
"VM Location" = $_.Location
"VM Resource Group Name" = $_.ResourceGroupName -join ','
}
}
$vmOutput | export-csv C:\Azure\VMdata.csv -delimiter ";" -force -notypeinformation
但是,当使用下面的代码尝试从多个订阅中提取数据时,没有得到任何结果。
$azuresubs = Get-AzSubscription
$azureSubs.foreach{
Select-AzSubscription $_
$VMs = Get-AzVM
$vmOutput = $VMs | ForEach-Object {
[PSCustomObject]@{
"VM Name" = $_.Name
"VM Profile" = $_.HardwareProfile.VmSize
"VM Type" = $_.StorageProfile.osDisk.osType
"VM Location" = $_.Location
"VM Resource Group Name" = $_.ResourceGroupName -join ','
}
}
}
$vmOutput | export-csv C:\Azure\VMdata.csv -delimiter ";" -force -notypeinformation
作为 powershell 的新手,我确信上面的语法不正确,因此非常感谢任何帮助。
谢谢
我想这里发生的事情是你在每次传递时覆盖你的变量(最后一次传递恰好没有虚拟机)。所以你需要附加到它,而不是覆盖它。在循环之前定义它:
$vmOutput = @()
然后在循环中附加到它
$vmOutput += $Vms | bla-bla-bla
决赛:
$vmOutput = @()
$azuresubs = Get-AzSubscription
$azureSubs.foreach{
Select-AzSubscription $_
$VMs = Get-AzVM
$vmOutput += $VMs | ForEach-Object {
[PSCustomObject]@{
xxx
}
}
}
我已经能够使用下面的代码从单个 Azure 订阅中导出 VMData。
$VMs = Get-AzVM
$vmOutput = $VMs | ForEach-Object {
[PSCustomObject]@{
"VM Name" = $_.Name
"VM Profile" = $_.HardwareProfile.VmSize
"VM Type" = $_.StorageProfile.osDisk.osType
"VM Location" = $_.Location
"VM Resource Group Name" = $_.ResourceGroupName -join ','
}
}
$vmOutput | export-csv C:\Azure\VMdata.csv -delimiter ";" -force -notypeinformation
但是,当使用下面的代码尝试从多个订阅中提取数据时,没有得到任何结果。
$azuresubs = Get-AzSubscription
$azureSubs.foreach{
Select-AzSubscription $_
$VMs = Get-AzVM
$vmOutput = $VMs | ForEach-Object {
[PSCustomObject]@{
"VM Name" = $_.Name
"VM Profile" = $_.HardwareProfile.VmSize
"VM Type" = $_.StorageProfile.osDisk.osType
"VM Location" = $_.Location
"VM Resource Group Name" = $_.ResourceGroupName -join ','
}
}
}
$vmOutput | export-csv C:\Azure\VMdata.csv -delimiter ";" -force -notypeinformation
作为 powershell 的新手,我确信上面的语法不正确,因此非常感谢任何帮助。
谢谢
我想这里发生的事情是你在每次传递时覆盖你的变量(最后一次传递恰好没有虚拟机)。所以你需要附加到它,而不是覆盖它。在循环之前定义它:
$vmOutput = @()
然后在循环中附加到它
$vmOutput += $Vms | bla-bla-bla
决赛:
$vmOutput = @()
$azuresubs = Get-AzSubscription
$azureSubs.foreach{
Select-AzSubscription $_
$VMs = Get-AzVM
$vmOutput += $VMs | ForEach-Object {
[PSCustomObject]@{
xxx
}
}
}