我正在使用VS和PowerShell创建我的第一个应用程序,需要从listview获取服务的名称。选择的输出如下所示:
ComputerName Status Name DisplayName
------------ ------ ---- -----------
PC Running Appinfo Application Information
我想要做的是从Appinfo
列获取值Name
并将其分配给变量。我对正则表达式没有运气,但我再次成为初学者,所以我可能做错了什么。是否有捷径可寻?
答案 0 :(得分:0)
您当前获得的输出是对象的选定属性的格式化(表格)视图(即属性ComputerName
,Status
,Name
和{{1} })。您可以通过DisplayName
cmdlet扩展特定属性的值:
Select-Object
您还可以将对象存储在变量中,并通过点符号访问该属性:
$name = ... | Select-Object -Expand Name
请注意,如果cmdlet输出多个对象,则变量将包含一个数组:
$obj = ...
$name = $obj.Name
您可以按索引访问成员对象的属性:
PS C:\> $services = Get-Service
PS C:\> $services.GetType().FullName
System.Object[]
PS C:\> $services.Count
136
或通过其属性选择特定对象:
$services[42].Name
从PowerShell v3开始,您还可以使用点属性表示法来获取所有数组成员的特定属性的值:
$services | Where-Object { $_.DisplayName -eq 'Application Information' } |
Select-Object -Expand Name
在PowerShell v3之前,这会抛出错误,因为数组对象没有属性$services.Name
。