Enviando um arquivo de registro hospedado para vários servidores

1

Eu tenho vários Servidores que eu preciso para empurrar este patch. Normalmente eu carregaria um WSUS ou equivalente. No entanto, gostaria de obter este trabalho em um ambiente DSC. Então, estou testando scripts para colocar em prática para este fluxo de trabalho.

O PowerShell reclama que não consegue encontrar a pasta.

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

Aparentemente, não estou passando as credenciais corretamente. Eu tentei tudo o que posso pensar usando sessões para não usar sessões ..

    $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"
             }
    }

O que estou fazendo de errado? Existe uma maneira melhor (sempre existe)?

    
por mikedopp 26.07.2017 / 17:49

2 respostas

1

  1. $HostedRegFile parece ser um caminho UNC, mas você tem dois pontos no caminho. Você precisa alterar D: para D$

  2. O regedit falha porque solicita o UAC na inicialização, mas você não está executando com uma GUI para reconhecer e permitir isso. Para permitir o lançamento do UAC, adicione -verb runas à invocação Start-Process .

  3. Se a meta final for executar via DSC, você precisará criar alguns compartilhamentos normais aos quais as contas de computador no domínio terão acesso. Os computadores do domínio não têm acesso a compartilhamentos administrativos como D $ e C $.

  4. Para evitar problemas de regedit e UAC, use cmdLets do powershell nativo: Set-ItemProperty -Path HKLM:\Software\XYZ -Name Color -Value Blue -Type String -Type também pode ser DWORD, QWORD, Binary, ExpandString

  5. Também é possível enviar entradas de registro por meio do GPO.

por 27.07.2017 / 16:00
0

Aqui está o que acabei com.

O curso UAC e WinRM tiveram que ser resolvidos antes que isso funcione.

$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"
        }
    }
    
por 02.08.2017 / 20:43