【发布时间】:2019-08-24 23:21:17
【问题描述】:
我正在为 Azure 中的磁盘准备一份报告,并且我想包含分配磁盘的 VM 名称。我在 get-azurermdisk cmdlet 中找到了一个名为 managedby 的属性,但它代表整个目录,而不仅仅是 VM 名称(包含在最后)。我想用 '/' 分割整个字符串,并且只想保留属性的最后一部分。
这是我准备的脚本:
$DISK = Get-AzureRmDisk
$Output = $DISK | ForEach-Object {
[PSCustomObject]@{
"Name" = $_.Name
"Resource Group Name" =$_.ResourceGroupName
"Disk Tier" = $_.Sku.Tier
"Disk Type" = $_.Sku.Name
"Managed By" = $_.ManagedBy
"Time Created" = $_.TimeCreated
"Disk Size (in GB)" = $_.DiskSizeGB
"I/O per second" = $_.DiskIOPSReadWrite
"MBps per second" = $_.DiskMBpsReadWrite
"Location" = $_.Location
}
}
我已经尝试过拆分:
"Managed By" = ($_.ManagedBy).Split('/')[8]
并单独循环以填充“管理者”列:
foreach($dsk in $dsks){
$vm = $DISK | Where-Object -Property id -EQ $dsk.Name
$prv = $dsk.ManagedBy.Split('/')[6]
$managed.Add($vm.Name,$prv)
}
foreach($vm in $Output)
{
if($ips.ContainsKey($vm."Name"))
{
$vm."Managed By"=$ips[$vm."Managed By"]
}
}
错误:
您不能在空值表达式上调用方法。
如何添加某种 ignore when value is null 语句?
【问题讨论】:
-
您可以添加if函数来检查它是否为空。
标签: azure powershell split disk