Форматирование результатов get-item по-разному - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть раздел реестра, из которого мне нужно получить имя строки.
Например: 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 голосов
/ 08 февраля 2019

Вот что я закончил и, похоже, работает, поскольку переменная $i содержит только одно значение.$t = get-item -Path HKLM:\Software\MyRegKey | select-object -expandproperty property foreach($i in $t){$i} Это сработало, изменив способ, которым я выполнял цикл foreach.Я неправильно передал переменную в цикл foreach.

0 голосов
/ 07 февраля 2019

Если в строке есть несколько значений, например:

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

И вы хотите просмотреть их, вы можете разделить символ пробела следующим образом.

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

Это дает вам кое-что, что вы можете повторить, используя For-EachObject командлет.

$MyRegKey
A
B
C
D

Обновление

Представьте себе, что вы создаете новый regkey так:

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"
}

Givingиспользуйте эти значения:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...