Назад | Перейти на главную страницу

Отправка размещенного файла реестра на несколько серверов

У меня есть несколько серверов, на которых мне нужно протолкнуть этот патч. Обычно я загружаю WSUS или аналогичный. Однако я хотел бы, чтобы это работало в среде DSC. Поэтому я тестирую сценарии, которые нужно внедрить в этот рабочий процесс.

PowerShell жалуется, что не может найти папку.

    Copy-Item $HostedRegFile -Destination $newfile "unauthorized"

По-видимому, я неправильно передаю учетные данные. Я перепробовал все, что мог придумать, чтобы использовать сеансы, чтобы не использовать сеансы ..

    $servers = Get-Content "d:\Powershell\Servers.txt" 
    $Session = New-PSSession -computername $servers -credential $MyCredential

    $HostedRegFile = "\\Contra2\D:\reg\Player2.reg"
    foreach ($server in $servers)
    {
        #$Session = New-PSSession -computername $server -credential $MyCredential
        $newfile = "\\$server\c$\Utils\"
        New-Item -ErrorAction SilentlyContinue -ItemType directory -Path \\$server\C$\Utils\
        Copy-Item $HostedRegFile -Destination $newfile 
        Invoke-Command -computername $server -ScriptBlock {
            Start-Process -filepath "C:\windows\regedit.exe" -argumentlist "/s C:\Utils\Player2.reg"
             }
    }

Что я делаю не так? Есть ли способ лучше (всегда есть)?

  1. $HostedRegFile кажется, это путь UNC, но у вас есть двоеточие в пути. Вам нужно изменить D: к D$

  2. В regedit не работает, потому что он запрашивает UAC при запуске, но вы не работаете с графическим интерфейсом, чтобы подтвердить и разрешить это. Чтобы разрешить запуск UAC, добавьте -verb runas к Start-Process призыв.

  3. Если конечной целью является запуск через DSC, вам нужно будет создать несколько обычных общих ресурсов, к которым учетные записи компьютеров в домене будут иметь доступ. Компьютеры домена не имеют доступа к административным ресурсам, таким как D $ и C $.

  4. Чтобы избежать проблем с regedit и UAC, используйте собственные командлеты PowerShell: Set-ItemProperty -Path HKLM:\Software\XYZ -Name Color -Value Blue -Type String -Тип также может быть DWORD, QWORD, Binary, ExpandString

  5. Также можно отправлять записи реестра через GPO.

Вот что у меня получилось.

Конечно, прежде чем это заработало, нужно было позаботиться о UAC и WinRM.

$servers = Get-Content "d:\Powershell\Servers.txt" 
$HostedRegFile = "\\Contra2\D$\reg\Player2.reg"
    foreach ($server in $servers)
    {
        $Session = New-PSSession -computername $server -credential $MyCredential
        Copy-Item -Path "$RegFile" -Destination "C:\Utils\" -force -ToSession $session 
        Invoke-Command -session $session -ScriptBlock 
        {
            regedit /i /s C:\Utils\Player2.reg"
        }
    }