azure - 注意 PSObject 中的属性未在 Foreach 循环中填充 | NSG 详细信息导出到 CSV
问题描述
我正在创建一个 Azure PS 脚本,它将获取所有 NSG,然后查找它是否附加到子网或 NIC
当我运行以下命令时,它会给出没有“附加到子网”列的输出。但是,当我使用 -ResourceGroupName 属性运行相同的 cmdlet 时,它会给出所需的“附加到子网”和“附加到 Nic”NoteProperty 的输出。
我无法调试为什么它没有添加“附加到子网”列Get-AzureRmNetworkSecurityGroup
$NSGdetails = @()
Get-AzureRmNetworkSecurityGroup | ForEach-Object {
$D2 = New-Object PSObject
Write-Host $_.Name
$subnet = $_.Subnets.Id
$nic = $_.NetworkInterfaces.id
$D2 | Add-Member -MemberType NoteProperty -Name "NSG Name" -Value $_.Name -Force
if ($subnet -ne $null) {
$subnetdetail = $subnet.Split('/')[-1]
$D2 | Add-Member -MemberType NoteProperty -Name "Attached To Subnet" -Value $subnetdetail -Force
}
if ($nic -ne $null) {
$nicdetail = $nic.Split('/')[-1]
$D2 | Add-Member -MemberType NoteProperty -Name "Attached To NIC" -Value $nicdetail -Force
}
$NSGdetails += $D2
}
$NSGdetails | Export-Csv -Path "C:\temp\allnicdetails.csv" -NoTypeInformation -Force
下面是输出Get-AzureRmNetworkSecurityGroup -ResourceGroupName RAH-AQ
PS C:\Users\021176\Desktop> $NSGdetails
NSG Name Attached To Subnet Attached To NIC
-------- ------------------ ---------------
linuxvm-nsg default linuxvm15
redhat-nsg redhat396
输出Get-AzureRmNetworkSecurityGroup
如下所述
PS C:\Users\021176\Desktop> $NSGdetails
NSG Name Attached To NIC
-------- ---------------
demolinux-nsg demolinux76
devnsg devnic
mastesta1-nsg mastesta1275
TutorialVM1 TutorialVM1
filenetapp-nsg filenetapp828
testvm1NSG
nehatest-nsg nehatest995
RHEL-nsg rhel858
linuxvm-nsg linuxvm15
linuxvm-nsg linuxvm15
redhat-nsg redhat396
SQLBackup-nsg sqlbackup454
opnvpntest-nsg opnvpntest764
解决方案
该Attached To Subnet
属性不会在 CSV 中结束,因为只有一些对象具有该属性,并Export-Csv
根据第一个输入对象决定要解析和写入的属性。更改您的代码以始终添加该属性,无论它是否有值:
if ($subnet -ne $null) {
$subnetdetail = $subnet.Split('/')[-1]
} else {
$subnetdetail = $null
}
$D2 | Add-Member -MemberType NoteProperty -Name "Attached To Subnet" -Value $subnetdetail -Force
if ($nic -ne $null) {
$nicdetail = $nic.Split('/')[-1]
} else {
$nicdetail = $null
}
$D2 | Add-Member -MemberType NoteProperty -Name "Attached To NIC" -Value $nicdetail -Force
推荐阅读
- real-time-updates - jFugue可以同时使用两个播放器
- javascript - 如何在Javascript中将路径数组转换为对象?
- firebase - 如何在 Firebase 应用中生成安全邀请令牌?
- pdf - 如何制作将使用 IIS 直接下载 PDF 的 QR 码?
- c++ - 为什么逐个字符地读取字符比遍历整个文件字符串要快?
- docker - 您是否尝试将目录挂载到文件上(反之亦然)?检查指定的主机路径是否存在 - Docker from Windows WSL
- vb.net - 将数字转换为小时
- python - 仅使用 pandas 来获取给定开始时间、结束时间和可用时间块的 15 分钟时间块的所有可能组合?
- python - 如何使用 docker 运行 django 项目
- java - isInterrupted() 在 interrupt() 之后返回 false。中断是如何工作的?