get-item的格式设置结果不同

时间:2019-02-07 15:26:46

标签: powershell

我有注册表项,我需要从中检索字符串的名称。
例如:HKLM:\Software\MyRegKey中有四个字符串值。字符串A,字符串B,字符串C和字符串D。我使用以下Powershell收集此信息

Get-Item -Path HKLM:\Software\MyRegKey | select-object -expandproperty`
property

以上内容将返回以下内容:

A
B
C
D

我需要做的是输出格式不同的格式。简而言之,我需要它仅返回一个值,然后将其放入foreach语句中以迭代并返回其余值。

这可能吗?

Get-Item -Path HKLM:\Software\MyRegKey | select-object -expandproperty`
property

Get-Item -Path HKLM:\Software\MyRegKey | select-object -expandproperty`
property

以上内容将返回以下内容:

A
B
C
D

所需的输出:

A

然后运行一个foreach语句以分别收集每个值。

2 个答案:

答案 0 :(得分:0)

如果您在这样的字符串中有多个值:

$MyRegKey = "A B C D"
$MyRegKey.Count
1

您想逐步浏览它们,可以像这样在“空格”字符上进行分割。

$MyRegKey = $MyRegKey.Split()
$MyRegKey.Count
4

这为您提供了一些您可以使用For-EachObject cmdlet进行迭代的东西。

$MyRegKey
A
B
C
D

更新

想象一下,像这样制作一个新的注册表项:

New-Item HKCU:\Software\MyRegKey 
New-ItemProperty -Path HKCU:\Software\MyRegKey -Name MyRegValue -PropertyType String -Value "A B C D"

这将创建以下密钥:

enter image description here

我可以使用以下代码检索其值:

$MyRegKey = Get-ItemProperty -Path HKCU:\Software\MyRegKey -Name MyRegValue
$MyRegKey.MyRegValue.Split()
A
B
C
D

我们可以遍历像这样的值:

MyRegKey.MyRegValue.Split() | ForEach-Object { "Property $i of MyRegKey = $_" ;$i++}
Property 0 of MyRegKey = A
Property 1 of MyRegKey = B
Property 2 of MyRegKey = C
Property 3 of MyRegKey = D

最终更新

我们可以使用此代码快速创建以下注册表项:

'A','B','C','D' | % {
New-ItemProperty -Path HKCU:\Software\MyRegKey -Name $_ -PropertyType String -Value "A B C D"
}

为我们提供这些值:

enter image description here

要在ForEach-Object循环中对此进行操作,我们可以使用以下代码:

(Get-Item -Path HKCU:\Software\MyRegKey).Property | ForEach-Object { 
    Write-Host "The key $_ has a value of $((Get-ItemProperty HKCU:\Software\MyRegKey -Name $_).$_)"
}

这将提供以下输出:

The key A has a value of A B C D
The key B has a value of A B C D
The key C has a value of A B C D
The key D has a value of A B C D

答案 1 :(得分:0)

以下是我的结论,由于变量$i仅包含一个值,因此似乎可以正常工作。 $t = get-item -Path HKLM:\Software\MyRegKey | select-object -expandproperty property foreach($i in $t){$i}通过更改我执行foreach循环的方式来工作。我错误地将变量传递给了foreach循环。