Как я могу использовать PowerShell для удаленного внесения изменений в реестр?

Я протестировал следующие параметры реестра PowerShell, и они установлены правильно. Может ли кто-нибудь показать мне способ сделать это для удаленного компьютера?

New-Item -itemType String HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\TrapConfiguration\Server0ps -Value "MY.DOMAIN.COM"
New-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\PermittedManagers -Name 1 -Value "whatever" 
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities -Name "Hello" -Value 4
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities -Name "There" -Value 8

person user1890242    schedule 19.09.2013    source источник
comment
Взгляните сюда (отличная работа Шей Леви!): psremoteregistry.codeplex.com   -  person CB.    schedule 19.09.2013
comment
Да, но, к сожалению, я не хочу использовать для этого сторонние модули.   -  person user1890242    schedule 19.09.2013


Ответы (3)


Используйте это как пример:

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computername ) 
        $regKey= $reg.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",$true) 
        $regKey.SetValue("New_Valuename_String","New_Valuedata",[Microsoft.Win32.RegistryValueKind]::String) 

Чтобы создать новый ключ, вам нужно использовать удаленное взаимодействие PowerShell с командлетом invoke-command for new-item.

person CB.    schedule 19.09.2013

Вы можете проверить модуль PSRemoteRegistry PowerShell и его версию для PowerShell 3.0 (с поддержкой x86.x64, http://psrr.codeplex.com/).

person Shay Levy    schedule 19.09.2013

Если вы просто хотите удалить ключ

$exchangeServers = @("xxxxx");
$hive = [Microsoft.Win32.RegistryHive]::LocalMachine;
$key = "SYSTEM\CurrentControlSet\Control\Lsa";

foreach ($exchangeServer in $exchangeServers)
{
    $regBaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($hive, $exchangeServer.ToString());
    $regKeys = $regBaseKey.OpenSubKey($key,$true);
    $beforeVal = $regKeys.GetValue("DisableLoopbackCheck");
    Write-Host $exchangeServer " - " $beforeVal;
    $regKeys.DeleteValue("DisableLoopbackCheck"); # a try catch can be placed here if there is a concern the key won't exist
    $keyNames = $regKeys.GetSubKeyNames();
    $afterVal = $regKeys.GetValue("DisableLoopbackCheck");
    if ($afterVal -eq $null)
    {
        Write-Host $exchangeServer " - deleted" -ForegroundColor DarkGreen;
    }
    else
    {
        Write-Host $exchangeServer " - " $afterVal -ForegroundColor Red;
    }
    Write-Host " ";
}
person Bbb    schedule 13.11.2018