[英]How to get the value of a particular propery from the result of a powershell command
我有一個變量$結果,其值是:
SESSIONNAME USERNAME ID STATE TYPE DEVICE
rdp-tcp#1 account17 7 Active rdpwd
我想單獨獲取ID的值並在其他查詢中使用它。
我嘗試了以下方法:
1. $idValue = @($result | %{ $_.ID })
-但未獲取值。
2. $result |Select -ExpandProperty ID
我收到錯誤“選擇對象:找不到屬性“ ID””。
如何從結果中單獨獲取屬性ID的值?
qwinsta
/ query
命令的輸出是字符串,而不是對象,因此沒有要打印的屬性ID
。 如果要將字段作為屬性,則需要將字符串轉換為對象:
query session | ? { $_ -match '^[ >](\S+) +(\S*?) +(\d+) +(\S+)' } |
select @{n='Service';e={$matches[1]}},
@{n='Username';e={$matches[2]}},
@{n='ID';e={$matches[3]}},
@{n='Status';e={$matches[4]}} | % {
$_.ID
}
或者,如果您僅對ID感興趣,則可以執行如下正則表達式替換:
$account = 'account17'
$pattern = '^[ >]\S+ +\S*? +(\d+) +\S+.*'
(query session $account | select -Skip 1) -replace $pattern, '$1'
這是正確引用單個屬性的格式。 我看不到用於創建RDP $ result的命令,因此我將以get-process為例,將其封裝為(),然后將().ID附加到最后。 適用於任何屬性,而不僅僅是.ID
(get-process | where {$_.Name -eq "Powershell"}|select ID).ID
# or
$MYID = (get-process | where {$_.Name -eq "Powershell"}|select ID).ID
$MYID
另一個選項是-split:
使用V4的一種解決方案:
($result).ForEach({($_ -split '\s+')[2]}) -match '\d'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.