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.