Recuperar automaticamente um conjunto de arquivos de todos os computadores do domínio


0

Existe algum script do PowerShell ou software utilitário gratuito ou comercial que possa ser executado em um servidor sob demanda e que copie um conjunto específico de arquivos de um local específico em todos os computadores de domínio visível de volta para um local central?

Portanto, presume-se que ele estabeleça uma lista de computadores de domínio do Windows e, para cada um, tente acessar um local específico na unidade C: e copie os arquivos nos quais estou interessado de volta para o servidor.

O uso de scripts de login não é um corredor aqui.


Por que não usar arquivos em lote?
— Paul

@ AlanB Se o uso de um arquivo em lotes não for uma opção. Sua única outra opção é escrever um programa na linguagem de programação de sua escolha que faça isso.
— Ramhound 31/07

Você perguntou se havia "algum método, script ou software", mas em sua última frase você disse que as duas primeiras coisas que você queria não eram aceitáveis.
— 31413 Jack

Vou mudar a pergunta para esclarecer.
— 31713 Alan B

@ Paul - porque, embora eu tenha acesso remoto ao servidor, não administro a rede, e as pessoas que o fazem seriam estranhas em relação aos scripts de login.
— 27713 Alan B

Respostas:


0

Eu não sou funcionário de TI da minha empresa, por isso não executei esse código completamente, portanto pode haver alguns erros.

$strCategory = "computer"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = ("(objectCategory=$strCategory)")

$colProplist = "name"
$s = foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

$computers = $colResults |% {$_.Properties} |% {$_.name} | sort | select {"\\" + $_}

foreach ($computer in $computers)
{
    $path = "YourFolder/YourFile.txt"

    $computerPath = Join-Path -Path $computer -ChildPath $path
    $computerPath # Or do a Get-Child instead of defining YourFile.txt
    Copy-Item -Path $computerPath -Destination 'C:\test.txt'
}

Se você encontrar um problema com credenciais, é assim que você cria uma unidade de rede, com a qual você pode fornecer credenciais:

$pwd = ConvertTo-SecureString "SuperSecurePassword" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("Administrator", $pwd)
$pd = New-PSDrive -Name O -PSProvider FileSystem -Root $remotePath -Credential $cred

E simplesmente mude $ computer com $ pd.

Lembre-se de fechá-lo depois, com

Remove-PSDrive -Name O
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.