Eu não sou um funcionário de TI na minha empresa, então não executei esse código totalmente, por isso pode ter alguns bugs.
$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 por $ pd.
Lembre-se de fechá-lo depois, com
Remove-PSDrive -Name O