我在Powershell中有一个示例查询;
Get-AzureRmDisk -ResourceGroupName $resourceGroupName |
Format-Table -Property Name, Managed By
结果
Name : OsDisk_1_dfa60a
ManagedBy : /subscriptions/resourceGroups/Company/Microsoft.Compute/vms/Server1
“属性”管理的输出太长。
我想将其缩短为最后一个/
之后的字符(正斜杠)
预期结果
Name : OsDisk_1_dfa60a
ManagedBy : Server1
到目前为止,我已经尝试过使用子字符串,并且使用上一个索引of来计算“ /”的索引,并在此开始子字符串,然后以ManagedBy属性字符串的全长结束子字符串;
Get-AzureRmDisk -ResourceGroupName $resourceGroupName |
Format-List -Property Name,
ManagedBy.SubString(ManagedBy.LastIndexOf('/'),ManagedBy.length)
随后发生错误:ManagedBy.LastIndexOf:术语'ManagedBy.LastIndexOf'不被识别为cmdlet,函数,脚本文件的名称,
解决方案
Get-AzureRmDisk -ResourceGroupName $resourceGroupName |
Format-Table -Property Name,
@{Name='ManagedBy';Expr={$_.ManagedBy.Split('/')[-1]}}
答案 0 :(得分:2)
这应该给您您想要的...
Format-List -Property Name,
@{Name='ManagedBy';Expr={$_.ManagedBy.Split('/')[-1]}}
答案 1 :(得分:0)
如果...
$ManagedBy = "/subscriptions/resourceGroups/Company/Microsoft.Compute/vms/Server1"
然后...
$LastResult = $ManagedBy.Split("/")[$ManagedBy.Split("/").Length - 1]
哪个仅返回数组中的最后一个值,在本例中为Server1
。数组从0(零)位置开始,因此您只需从数组Length
的末端开始走1步。
在这种情况下,请将ManagedBy
属性更改为$LastResult
的值,您应该可以将其合并到其余代码中。