-6

Я надеялся, что этот код vbs выполнит методы oShell.run на удаленной машине. Похоже, что это не так, но при выполнении этого скрипта не отображается ошибка.

on error resume next

dim oShell, strComputer, intProcessID

strComputer = InputBox("IP or Host Name:", "DELETER - serdaruzun@outlook.com")

set oShell = WScript.CreateObject("Wscript.shell") & strComputer

oShell.run "cmd.exe /C rd \\%PC%\Users\1*.* /s /q", null, null, intProcessID
oShell.run "cmd.exe /C rd \\%PC%\Users\2*.* /s /q", null, null, intProcessID
oShell.run "cmd.exe /C rd \\%PC%\Users\3*.* /s /q", null, null, intProcessID
set oShell = nothing

Как правильно выполнять эти команды на удаленном компьютере?

1 ответ1

7

прежде всего - если вы удалите "по ошибке возобновить следующее", вы бы сразу увидели эту ошибку.

Далее, я бы порекомендовал вам попробовать использовать метод удаления папки на удаленном ПК вместо запуска cmd.

После этого вы не можете запустить cmd.exe для C:\ и каким-то образом заставить его работать на удаленном ПК, если только вы не запускаете VBS с помощью psexec или аналогичного и нацеливаетесь на удаленный ПК.

Я думаю, что это ближе к тому, что вы после:

'First, we get the host name
strComputerName = InputBox ("Enter Hostname or IP to delete from")

'Next, we check the user actually entered a name or IP - you missed this!
if len(strComputerName) < 1 then
    WScript.Echo "No Computer Name Entered - Quitting"
    WScript.Quit
end if

'next, we check it exists - you missed this bit too!  no point in trying to remove folders from a non existant PC
If Reachable(strComputerName) Then
    DeleteAFolder("\\" & strComputerName & "\c$\users\me\desktop\test")
    DeleteAFolder("\\" & strComputerName & "\C$\folder\folder2")
Else 
    WScript.Echo "Computer is Unreachable! - Quitting!"
End If


'This function is the one called to check if the computer is reachable in line 11!
Function Reachable(strComputerName)
    Dim wmiQuery, objWMIService, objPing, objStatus
    wmiQuery = "Select * From Win32_PingStatus Where Address = '" & strComputerName & "'"
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set objPing = objWMIService.ExecQuery(wmiQuery)
    For Each objStatus in objPing
        If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
            Reachable = False 'if computer is unreacable, return false
        Else
            Reachable = True 'if computer is reachable, return true
        End If
    Next
End Function

'This function takes the name of the folders (lines 12 and 13) and deletes them
Sub DeleteAFolder(filespec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   'True in the line below includes read only folders
   fso.DeleteFolder(filespec, true)
End Sub

Просто короткое замечание ... если это не сработает - возможно, это проблема с разрешениями, но я не собираюсь расширять этот скрипт - так что вы сами отсюда.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .