Script do PowerShell que copia um arquivo para a lista remota de computadores

0

Eu tentei copiar um arquivo do meu pc para uma lista de PCs remotos. Eu fiz este script do PowerShell, mas recebo o seguinte erro quando o script está sendo executado

"Copy-Item : Access is denied" .

$Pclist = Get-Content "D:\pclist.txt"
$username = "adminuser"
$password = "pass"
$FileLocation = 'D:\location.exe'
$Destination = "d$\"
foreach ($_ in $Pclist)
{Copy-Item $FileLocation -Destination \$_\$Destination -Recurse -PassThru}
    
por user681927 04.01.2017 / 18:50

1 resposta

1

Antes de fazer qualquer outra coisa, certifique-se de que não haja algo suspeito acontecendo com a sua sintaxe, executando o comando com valores codificados:

Copy-Item 'D:\location.exe' -Destination \Computer1\D$\ -Recurse -PassThru

Sem ver sua mensagem de erro completa, não tenho certeza se você está tendo acesso negado em sua máquina local ou na (s) máquina (s) remota (s).

Supondo que seja sua máquina local, eleve seu prompt (execute-o como administrador). Eu normalmente não vejo esse problema ao puxar de uma unidade diferente de 'C', então não estou 100% certo de que este é o problema que você está tendo.

Você poderia descobrir que a conta que está executando não tem permissão para gravar / acessar em máquinas remotas. Parece que você começou a especificar um nome de usuário e uma senha lá, mas você não está realmente usando ainda.

Para obter um objeto de credencial que você pode usar com Copy-Item , considere o seguinte:

$username = "adminuser"
$password = "pass"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, ($password | ConvertTo-SecureString -AsPlainText -Force)

Observe que isso deixará a senha em texto sem formatação no script para que qualquer pessoa possa ver. Pessoalmente, prefiro fazer isso:

$username = "adminuser"
$cred = Get-Credential $username

Isso abrirá uma caixa de diálogo Segurança do Windows com o nome de usuário pré-preenchido e pedirá que você digite a senha.

Você pode usar o $cred com outros comandos, como tal:

Copy-Item $FileLocation -Destination \$_\$Destination -Credential $cred -Recurse -PassThru

Devo salientar que isso não protege suas credenciais. Contanto que esse objeto $ cred exista, é possível extrair a senha em texto plano ( $cred.GetNetworkCredential().password ).

    
por 04.01.2017 / 21:42

Tags