【问题标题】:Powershell filtering/formatting when querying Azure查询 Azure 时的 Powershell 过滤/格式化
【发布时间】:2018-01-02 00:25:53
【问题描述】:

请帮助格式化命令的输出: Get-AzureRmVMUsage -Location "West US"

现在显示:

Name                             Current Value Limit  Unit

Availability Sets                           77  322000 Count
Total Regional Cores                      4159  323000 Count
Virtual Machines                           999 32220000 Count

如何通过管道/过滤掉它,使其仅显示区域核心总数的值?

选择名称显示如下:

Get-AzureRmVMUsage -Location "East US" -Verbose | Select Name

Name                                               
----                                               
Microsoft.Azure.Management.Compute.Models.UsageName
Microsoft.Azure.Management.Compute.Models.UsageName

谢谢, 德米特里

【问题讨论】:

  • 添加 -eq 时报错Get-AzureRmVMUsage -Location "East US" -Verbose | Select Name -eq 'Total Regional Cores'Select-Object : A parameter cannot be found that matches parameter name 'eq'.At line:1 char:64
  • 你应该使用 | Where-Object 而不是 Select-Object,并将其包装在过滤器语句中。请使用这些术语进行一些研究,看看它们是否有帮助。至于第二个问题,您在选择名称时会看到类型,您可能需要通过管道连接到 For Each 语句,然后从正在返回的 UsageName 对象中提取一些属性。
  • 什么也没显示,以前试过。研究是件好事,但我需要一个例子,它是如何工作的。 Get-AzureRmVMUsage -Location "East US" -Verbose | Where-Object $_.Name -eq 'Total Regional Cores'}

标签: powershell azure filter command-line-interface


【解决方案1】:

您可以使用以下命令。

(Get-AzureRmVMUsage -Location "East US"|select -ExpandProperty Name).LocalizedValue

这是结果。

根本原因是Name 包含两个子值:ValueLocalizedValue。如果你直接选择它们,你会得到Microsoft.Azure.Management.Compute.Models.UsageName

更新:

那么我如何获得对应于 Total Regonal 的确切值 核心

只需使用以下命令。

$names= Get-AzureRmVMUsage -Location "East US"
foreach($name in $names) {$results = [pscustomobject]@{'name'=$name.name.LocalizedValue;'value'=$name.CurrentValue};$results}

更新2:

有一个 Total Regional Cores 变量,其值为 5 你的例子。我希望格式只显示这个值而不 显示其他内容

foreach($name in $names) {$results = [pscustomobject]@{'name'=$name.name.LocalizedValue;'value'=$name.CurrentValue};$results | ?{$_.name -eq 'Total Regional Cores'}}

【讨论】:

  • 那么我如何获得对应于总区域核心的确切值
  • Walter,谢谢你的帮助,这不是我需要的 100%。我希望命令只显示区域核心总数,可以这样做吗?
  • @Dmitry Total Regional Cores你的意思是可以在一个区域使用的核心还是已经使用的核心?
  • @Dmitry 如果要获取已使用的内核,可以使用Get-AzureRmVMUsage -Location "East US"|select CurrentValue get value 并使用循环获取总内核。很简单。
  • @Dmitry 您无法直接获得所需的值。您需要获取每种尺寸的值并获取总值。
猜你喜欢
  • 1970-01-01
  • 2014-04-06
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多