![Экспорт ключей в файл .reg с помощью Powershell](https://rvso.com/image/1567498/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%20%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%20.reg%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20Powershell.png)
Мне нужно изменить несколько ключевых значений в реестре Windows 7, чтобы добавить параметр в команду, запускающую VLC.
К счастью, все ключи являются дочерними элементами ключей, начинающихся с VLC.
:
Команду для Open
и PlayWithVLC
нужно отредактировать. Я думаю о:
- экспорт ключей в файл .reg,
- внешнее редактирование значений для добавления
--no-playlist-enqueue
в строку - повторный импорт файла .reg в реестр.
Мои навыки работы с PowerShell ограничены, но я предполагаю, что код должен быть примерно таким:
Get-ChildItem "Registry::HKCR" -Recurse -Force
| where { $_.Name -match 'vlc.'}`
| ForEach-Object {
try {
<create .reg entry>
}
catch { }
}
но я застрял на этом этапе. Не могли бы вы дать мне совет, как действовать дальше?
решение1
Хорошо, у вас ограниченные навыки PS, и вы хотите автоматизировать работу с реестром.
Уххххх… ты уверен? 8-}
Все это, как говорится.
То, что вы здесь показываете, прекрасно, за исключением того, что вы не показываете ни значения, которые нужно задать, ни команду для задания ключа реестра.
Эти командлеты можно использовать для работы с реестром.
Get-Command -CommandType Cmdlet -Name '*item*'
CommandType Name ModuleName
----------- ---- ----------
Cmdlet Clear-Item Microsoft.PowerShell.Management
Cmdlet Clear-ItemProperty Microsoft.PowerShell.Management
Cmdlet Copy-Item Microsoft.PowerShell.Management
Cmdlet Copy-ItemProperty Microsoft.PowerShell.Management
Cmdlet Get-ChildItem Microsoft.PowerShell.Management
Cmdlet Get-Item Microsoft.PowerShell.Management
Cmdlet Get-ItemProperty Microsoft.PowerShell.Management
Cmdlet Move-Item Microsoft.PowerShell.Management
Cmdlet Move-ItemProperty Microsoft.PowerShell.Management
Cmdlet New-Item Microsoft.PowerShell.Management
Cmdlet Remove-Item Microsoft.PowerShell.Management
Cmdlet Remove-ItemProperty Microsoft.PowerShell.Management
Cmdlet Set-Item Microsoft.PowerShell.Management
Cmdlet Set-ItemProperty Microsoft.PowerShell.Management
Перед использованием обязательно ознакомьтесь с файлами справки и их примерами.
PSRemoteRegistry 1.0.0.0
Этот модуль содержит функции для создания, изменения или удаления подразделов и значений реестра на локальных или удаленных компьютерах.
https://www.powershellgallery.com/packages/PSRemoteRegistry/1.0.0.0
https://stackoverflow.com/questions/28076128/powershell-export-multiple-keys-to-one-reg-file
Как мы знаем, возня с реестром может действительно навредить, если вы не будете осторожны. Поэтому сначала сделайте резервную копию, чтобы вы могли восстановиться в случае аварии или, по крайней мере, сделать точку восстановления системы, контрольную точку/снимок виртуальной машины.
Итак, вот небольшое изменение в опубликованном вами коде, но не воспринимайте это как окончательное, поскольку вам нужно принять решение о том, какие действия следует предпринять и как.
Get-ChildItem "Registry::HKCR" -Recurse -Force `
| where { $_.Name -match 'vlc.'}`
| ForEach-Object {
try {
'Target key to modify / export / whatever'
$_.Name
# 'Registry code here' -WhatIf # remove the whatif if you are sure you are good with what you have
}
catch {
Write-Warning -Message 'Key not accessible'
$_.Name
}
}