Я пишу сценарий резервного копирования / восстановления для PowerShell, который позволяет пользователям создавать резервные копии и восстанавливать различные настройки до и после установки windows. Один из примеров включает HKEY_USERS\S-1-5-21-3096151585-4241824952-1105149943-1008\SOFTWARE\7 Taskbar Tweaker\Options
Как мне рекурсивно сохранить этот ключ как файл reg, например, с помощью reg export <keyname> <filename> [/y]
или другого механизма экспорта, без ручного ввода sid? SID - это динамический c на fre sh установках, поэтому я должен также заменить SID в reg-файле, чтобы обеспечить правильный импорт.
$User = New-Object System.Security.Principal.NTAccount($env:UserName)
$sid = $User.Translate([System.Security.Principal.SecurityIdentifier]).value
Приведенный выше фрагмент дает вам SID зарегистрированного- в пользователе. Это при добавлении к HKEY_USERS дает вам правильный путь для этого имени пользователя.
New-PSDrive HKU Registry HKEY_USERS
Get-Item "HKU:\${sid}"
Это вытягивает sid текущего пользователя;
$content = [System.IO.File]::ReadAllText("c:\temp\test.reg").Replace("anoose","$sid"); [System.IO.File]::WriteAllText("c:\temp\test.reg", $content)
Это заменяет anoose текущим SID, но как мне использовать шаблон регулярного выражения для замены старого SID на текущий пользовательский sid? или ^S-\d-(\d+-){1,14}\d+$
или S-\d-\d-\d+-\d+-\d+-\d+-\w+
, ни один из них не работает в моем скрипте; ex, $r = [regex] "/^S-1-[0-59]-\d{2}-\d{10}-\d{10}-\d{8}-[1-9]\d{3}/"
...
«Заменить» пытается заменить сам шаблон регулярного выражения.