1

我正在使用 powershell 中的 citrix 注册表项。在“HKLM:\SOFTWARE\WOW6432Node\Policies\Citrix”下有许多键,它们是一个数字,后面是一些由字母组成的键,例如“事件、证据和 IMA”。

我正在尝试用“HKLM:\SOFTWARE\WOW6432Node\Policies\Citrix”的所有子键填充一个数组,这些子键是数字,这样我就可以根据某个地方的金色图像检查每个子键中的值。

我假设这样的密钥少于 1,000 个。到目前为止,我已经尝试过:

$UserSubKeys = get-childitem "HKLM:\SOFTWARE\WOW6432Node\Policies\Citrix" -include [0..999] 

但这没有任何回报。

我可以做类似的事情

$UserSubKeys = get-childitem | where-object {$_.name -match "0" -or $_.name -match "1"}

并为“0”到“999”中的每一个做一个单独的 - 或,但这似乎很痛苦和荒谬。

有什么建议么?

4

2 回答 2

0

尝试这个:

$UserSubKeys = get-childitem HKLM:\WOW6432Node\Policies\Citrix | where-object {$_.name -match '^\d{1,3}$'}  

正则表达式表示匹配,其中名称字符串仅包含至少一个且不超过 3 个数字(^ 表示字符串的开头,$ 表示字符串的结尾)

于 2013-07-18T20:29:59.957 回答
0

您可以使用以下任何一种:

# returns all keys whose name consists only of the characters 0-9
get-childitem "HKLM:\SOFTWARE\WOW6432Node\Policies\Citrix" |?{ $_.Name -match '^[0-9]+$' }

# returns all keys whos name can successfully be parsed into an integer
get-childitem "HKLM:\SOFTWARE\WOW6432Node\Policies\Citrix" |?{ [int]::TryParse($_.Name, [ref] $null) }
于 2013-07-18T17:23:38.297 回答