PowerShell - [решено] Поиск по значениям реестра
-
dosperados
Re: PowerShell - [решено] Поиск по значениям реестра
yurfed, Спасибо за помощь, но привычка пользоваться штатными средствами у меня с детства.
При том лучше один раз разобраться и решать подобные проблемы в дальнейшем маленькими скриптами, которые я могу централизовано запускать.
При том лучше один раз разобраться и решать подобные проблемы в дальнейшем маленькими скриптами, которые я могу централизовано запускать.
-
yurfed
Re: PowerShell - [решено] Поиск по значениям реестра
dosperados, Ваше право. Только хотелось подсказать готовый и удобный вариант. Лет 10 этой прожкой пользуюсь. Проблем небыло.
Ещё раз, право ваше.
ЗЫ Я не думаю что ассемблер тупее чем powershell. Если не ошибаюсь, написано именно на ассемблере + прикрученный GUI.
Ещё раз, право ваше.
ЗЫ Я не думаю что ассемблер тупее чем powershell. Если не ошибаюсь, написано именно на ассемблере + прикрученный GUI.
-
yurfed
Re: PowerShell - [решено] Поиск по значениям реестра
Цитата Kazun:
Get-ChildItem "HKCU:\Software\Microsoft\Office\" -Recurse -Include excel | ForEach-Object { # я добавил ограничение -Include excel
$obj = Get-ItemProperty $_.pspath
$prop = $obj | Get-Member -Type NoteProperty -ErrorAction SilentlyContinue | Foreach {$_.Name} # здесь мне совсем не понятно зачем используется Get-Member с подавлением ошибок, ошибки возникают из-за того что не все структуры объекта имеют тип NoteProperty, поставил ограничение -name PSPath
$prop | Where {$obj.$_ -match "GalRepBuilder.XLA"} | Foreach {
$obj | Set-ItemProperty -Name $_ "C:\PATH"
}
}
Не смог понять полностью суть вашего примера, у меня оригинальный вариант примера не работает, так и мои модификации не заставили его работать...
Оригинальный вариант примера выдает ошибку:
Set-ItemProperty : Не удается привязать объект ввода к любым параметрам команды, так как команда не принимает входные данные конвейера, либо входные данные
и их свойства не совпадают с любыми из параметров, принимающих входные данные конвейера.
строка:5 знак:10
+ $obj | Set-ItemProperty -Name $_ "C:\PATH"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (@{LastUILang=10....Core\Registry}:PSObject) [Set-ItemProperty], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.SetItemPropertyCommand
Get-ChildItem "HKCU:\Software\Microsoft\Office\" -Recurse -Include excel | ForEach-Object { # я добавил ограничение -Include excel
$obj = Get-ItemProperty $_.pspath
$prop = $obj | Get-Member -Type NoteProperty -ErrorAction SilentlyContinue | Foreach {$_.Name} # здесь мне совсем не понятно зачем используется Get-Member с подавлением ошибок, ошибки возникают из-за того что не все структуры объекта имеют тип NoteProperty, поставил ограничение -name PSPath
$prop | Where {$obj.$_ -match "GalRepBuilder.XLA"} | Foreach {
$obj | Set-ItemProperty -Name $_ "C:\PATH"
}
}
PowerShell - [решено] Поиск по значениям реестра
Не смог понять полностью суть вашего примера, у меня оригинальный вариант примера не работает, так и мои модификации не заставили его работать...
Оригинальный вариант примера выдает ошибку:
Set-ItemProperty : Не удается привязать объект ввода к любым параметрам команды, так как команда не принимает входные данные конвейера, либо входные данные
и их свойства не совпадают с любыми из параметров, принимающих входные данные конвейера.
строка:5 знак:10
+ $obj | Set-ItemProperty -Name $_ "C:\PATH"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (@{LastUILang=10....Core\Registry}:PSObject) [Set-ItemProperty], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.SetItemPropertyCommand
-
dosperados
Re: PowerShell - [решено] Поиск по значениям реестра
Нашел замечательную статью
готовый пример:
Код:
тык
готовый пример:
Код:
Код: Выделить всё
Get-ChildItem "HKCU:\Software\Microsoft\Office\" -rec -ea SilentlyContinue | foreach {
$CurrentKey = (Get-ItemProperty -Path $_.PsPath)
select-string "GalRepBuilder.XLA" -input $CurrentKey -AllMatches | foreach {($_.matches)|select-object Value}
}-
dosperados
Re: PowerShell - [решено] Поиск по значениям реестра
Нашел замечательную статью
готовый пример:
Код:
тык
готовый пример:
Код:
Код: Выделить всё
Get-ChildItem "HKCU:\Software\Microsoft\Office\" -rec -ea SilentlyContinue | foreach {
$CurrentKey = (Get-ItemProperty -Path $_.PsPath)
select-string "GalRepBuilder.XLA" -input $CurrentKey -AllMatches | foreach {($_.matches)|select-object Value}
}-
dosperados
Re: PowerShell - [решено] Поиск по значениям реестра
Код:
Как выбрать конкретный параметр чтобы в нем изменить значение?
Код: Выделить всё
Get-ChildItem "HKCU:\Software\Microsoft\Office\" -rec -ea SilentlyContinue | foreach {
$CurrentKey = (Get-ItemProperty -Path $_.PsPath)
if ($CurrentKey -match "GalRepBuilder.XLA") {
$a = $CurrentKey
$a.Description
$a.PSPath
}
}Как выбрать конкретный параметр чтобы в нем изменить значение?
-
Foreigner
Re: PowerShell - [решено] Поиск по значениям реестра
Цитата Foreigner:
[array] $keys = gci 'HKCU:\Software\Microsoft\Office' -recurse -include 'Excel'
foreach ($key in $keys) {
$key.property | ? { (gp $key.pspath).$($_) -eq 'c:\gal810\exe\XLS\F_XlsRep\GalRepBuilder.XLA' } | % {
sp $key.pspath $_ 'C:\New\Path\GalRepBuilder.XLA'
}
}
Данный код не отрабатывает, по факту значения в реестре не меняются.
[array] $keys = gci 'HKCU:\Software\Microsoft\Office' -recurse -include 'Excel'
foreach ($key in $keys) {
$key.property | ? { (gp $key.pspath).$($_) -eq 'c:\gal810\exe\XLS\F_XlsRep\GalRepBuilder.XLA' } | % {
sp $key.pspath $_ 'C:\New\Path\GalRepBuilder.XLA'
}
}
PowerShell - [решено] Поиск по значениям реестра
Данный код не отрабатывает, по факту значения в реестре не меняются.
-
dosperados
Re: PowerShell - [решено] Поиск по значениям реестра
dosperados, У меня нет офиса за ненадобностью, тестировал на 7-ZIP, все отрабатывало..
-
Foreigner
Re: PowerShell - [решено] Поиск по значениям реестра
dosperados, У меня нет офиса за ненадобностью, тестировал на 7-ZIP, все отрабатывало..
-
Foreigner
Re: PowerShell - [решено] Поиск по значениям реестра
Foreigner, Пробовал запускать ваш пример без изменений, ни каких ошибок нет, но и результата нет. В реестре параметр не меняется.