Automatize a exclusão de todos os arquivos em um diretório de uma lista de computadores Windows

Automatize a exclusão de todos os arquivos em um diretório de uma lista de computadores Windows

Tenho centenas de computadores com problemas de espaço e, ultimamente, tenho executado PSExecing em cada computador desta lista e executado um "del /s /qc:\DIRECTORY*" em cada máquina, o que é simplesmente ridículo.

Encontrei um script VB que consulta um arquivo ComputerList.txt que eu poderia modificar com uma lista de todos os nomes de host de todos os computadores em questão e, em seguida, outro FolderList.txt onde eu poderia listar todos os diretórios para esvaziar.

Exceto que o script não está funcionando e exclui uma pasta de um diretório de qualquer maneira. É claro que quero excluir todos os itens de uma pasta. Não exclua a pasta em si.

A funcionalidade que eu gostaria é que o VBScript consultasse o arquivo ComputerList.txt, que contém todos os nomes de host para modificar. Em seguida, ele excluiria todos os arquivos nos diretórios listados no arquivo FoldersList.txt. Ignorando todos os arquivos que estão em uso ou nomes de host que meus direitos não administram. Seria ideal se uma lista de nomes de host que foram ignorados devido a direitos ou por estarem offline fosse exportada para um arquivo TXT para que eu pudesse consultá-los novamente.

Se alguém pudesse me ajudar com isso, seria incrível! Obrigado a todos. Aqui está o script que tenho:

Option Explicit
Const strFolderList = "C:\Scripts\FolderList.txt"
Const strComputers = "C:\Scripts\ComputerList.txt"
Dim objFSO, inFile, ComputerList, objDictionary, strFolderName, colfolders, intSize
Dim arrFolders(), objWMIService, intKey, Item, colSubfolders
intSize = 0

Set objFSO = CreateObject("scripting.filesystemobject")
Set inFile = objFSO.OpenTextFile(strFolderList,1)
Set ComputerList = objFSO.OpenTextFile(strComputers,1)
Set objDictionary = CreateObject("Scripting.Dictionary")
'---------Read folderlist into an Dictionary Array---------
intkey = 1
Do Until inFile.AtEndOfStream
    objDictionary.Add intKey, inFile.ReadLine
    intKey = intKey + 1
Loop
inFile.Close
'-----------------------------------
'----Read computerlist line by line and call FileDelete
Do Until ComputerList.AtEndOfStream
    Call FileDelete(computerlist.ReadLine)
    WScript.Echo "Done."
Loop
ComputerList.Close


'-----Uses the computer name above and connects to WMI 
Sub FileDelete(strComputer)
 Set objWMIService = GetObject("winmgmts:" _ 
  & "{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" _ 
  & strComputer & "\root\cimv2")
'---loop through the dictionary array and delete folders
    For Each Item In objDictionary.Items
        strFolderName = Item
        Set colSubfolders = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
     & "Where AssocClass = Win32_Subdirectory " _
     & "ResultRole = PartComponent")

        ReDim Preserve arrFolders(intSize)
        arrFolders(intSize) = strFolderName
        intSize = intSize + 1
        On Error Resume Next 
        For Each objFolder in colSubfolders
            'Folder does not exist
            If Hex(Err.Number) = 80041002 Then 
                Err.Clear
             WScript.Echo strFolderName & " does not exist."
            Else
                'folder exists
                GetSubFolders strFolderName
            End If
        Next

        For i = Ubound(arrFolders) to 0 Step -1
            strFolder = arrFolders(i)
            strFolder = Replace(strFolder, "\", "\\")
            Set colFolders = objWMIService.ExecQuery _
             ("Select * from Win32_Directory where Name = '" & strFolder & "'")

            For Each objFolder in colFolders
             errResults = objFolder.Delete
            Next
        Next
    Next
End Sub

Sub GetSubFolders(strFolderName)
 Set colSubfolders2 = objWMIService.ExecQuery _
  ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _
  & "Where AssocClass = Win32_Subdirectory " _
  & "ResultRole = PartComponent")

 For Each objFolder2 in colSubfolders2
  strFolderName = objFolder2.Name
  ReDim Preserve arrFolders(intSize)
  arrFolders(intSize) = strFolderName
  intSize = intSize + 1
  GetSubFolders strFolderName
 Next
End Sub

informação relacionada