Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Remote-Ordner löschen

Frage Entwicklung VB for Applications

Mitglied: Borber

Borber (Level 1) - Jetzt verbinden

15.01.2010, aktualisiert 17:36 Uhr, 2403 Aufrufe, 4 Kommentare

Hallo,

ich habe mir ein Script gebastelt, das mir die lokalen Profile aller User bis auf die Administratoren, Default-Profile und das des eingeloggten Users löschen soll
Das Script scheint zu funktionieren, jedoch nicht bei jedem Profil
Es überspringt sehr oft den Ordner "Temporary Internet Files", da hier für das VB-Script unlöschbare Dateien liegen.

Wenn ich allerdings per einfacher .bat-Datei mittels

01.
 rd /S /Q "\\%Rechner%\c$\Dokumente und Einstellungen\%usrlogin%" 
lösche, geht das ohne Probleme


Hier ein Auszug aus meinem VB-Script:

01.
... 
02.
    If WMIping( Rechner ) = "OK" Then 'Rechner eingeschaltet?? 
03.
     
04.
    Set objFSO = CreateObject("Scripting.FileSystemObject")  
05.
    Set objFolder = objFSO.GetFolder("\\" & Rechner & "\\c$" & "\\Dokumente und Einstellungen")  
06.
 
07.
'eingeloggter username auslesen 
08.
    Set objWMIService = GetObject("winmgmts:\\" & Rechner & "\root\CIMV2") 
09.
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _ 
10.
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly) 
11.
            
12.
'username bereinigen                               
13.
        For Each objItem In colItems 
14.
          strUser = Right(objItem.Username,Len("SysTor\")) 
15.
        Next 
16.
 
17.
 For Each Profile In objFolder.SubFolders  
18.
          Select Case (Profile.Name) 'Problem mit LCase() UCase() 
19.
            Case strUser 'username des eingeloggten Benutzers auslassen 
20.
              'msgBox Profile msgbox zu testzwecken 
21.
            Case "Administrator"  
22.
              'msgBox Profile 
23.
            Case "All Users" 
24.
              'msgBox Profile  
25.
            Case "Default User"  
26.
              'msgBox Profile 
27.
            Case "LocalService" 
28.
              'msgBox Profile   
29.
            Case "NetworkService"  
30.
              'msgBox Profile 
31.
            Case Else  
32.
              objfso.DeleteFolder Profile.Path, True 'true für die direkte Löschung 
33.
          End Select  
34.
      Next  
35.
          OutputFile.WriteLine("Rechner: " & Rechner & " bearbeitet." & vbrLF)     
36.
....
Mitglied: 45877
15.01.2010 um 13:22 Uhr
Bitte warten ..
Mitglied: Borber
15.01.2010 um 13:41 Uhr
ja,

aber es soll direkt aus dem Script gelöscht werden ohne die Verwendung von delprof.
Geht mir auch mehr um die Lösung, warum aus dem Script die Ordner nicht gelöscht werden können, vom DOS-Prompt her schon.
Bitte warten ..
Mitglied: 60730
15.01.2010 um 16:09 Uhr
Servus,

wie Chewie schon schrieb...

btw: so ganz für garnix schreiben nicht mal die Redmonter Praktikanten eine extra Software für etwas, dasm man "auch" mit del / Rd lösen könnte.

Wer Profile per Hand im Explorer löscht / oder ein Script benutzt - dass das gleiche macht - darf das gerne tun - aber hier keine Hilfe erwarten.

  • Und da delprof eh ein Werkzeug ist, das per command-line gesteuert wird....
  • wohl keiner dein halben Scriptschnippsel ausprobieren wird - um das Problem zu erkennen...Dazu sollte es schon komplett und in Code Tags stehen

Wirst du wohl mit der Aussage leben müssen.


Gruß
Bitte warten ..
Mitglied: Borber
15.01.2010 um 17:33 Uhr
es geht mir wie oben gesagt eigentlich nur darum, warum das

.DeleteFolder

nicht die gleichen "Rechte" wie das RD in einer DOS-Box hat bzw. wie man das trotzdem machen kann, ohne auf delprof/DOS u.a. ausweichen zu müssen.


hier mal das ganze script (inklusive der Ausweichmthode über ein DOS-Prompt und das .DeleteFolder aus-remarked)
Von einer Rechner.txt liest er die Remote-Rechnernamen ein.

01.
On Error Resume Next 
02.
 
03.
Dim objFSO, objWSHShell, objRechnerliste, strRechner, arrRechner, strUser 
04.
Dim Rechner, Rechnerstatus, OutputFile 
05.
 
06.
Const ForReading   = 1 
07.
Const ForWriting   = 2 
08.
Const ForAppending = 8 
09.
Const Rechnerliste = "Rechner.txt" 
10.
Const Loeschliste  = "Loesch.txt" 
11.
Const wbemFlagReturnImmediately = &h10  
12.
Const wbemFlagForwardOnly = &h20 
13.
 
14.
Set objFSO      = CreateObject("Scripting.FileSystemObject") 
15.
Set objWSHShell = WScript.CreateObject("WScript.Shell") 
16.
 
17.
'     Datei existiert?, ja, also löschen - verwendung kommt später 
18.
If  objFSO.FileExists(objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), Loeschliste)) Then 
19.
      objFSO.deleteFile (Loeschliste) 
20.
End if 
21.
 
22.
If not objFSO.FileExists(objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), Rechnerliste)) Then 
23.
    MsgBox "Rechnerliste fehlt!",64, WScript.ScriptName 
24.
Else 
25.
    Set objRechnerliste   = objFSO.OpenTextFile(objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), Rechnerliste), ForReading) 
26.
    strRechner = objRechnerliste.ReadAll 
27.
    objRechnerliste.Close 
28.
End If 
29.
 
30.
strRechner = Replace(strRechner, chr(13), "") 
31.
arrRechner = Split(strRechner, vblf) 
32.
 
33.
set OutputFile = objFSO.OpenTextFile(objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), Loeschliste), ForWriting, true) 
34.
 
35.
For Each Rechner in arrRechner 
36.
    If WMIping( Rechner ) = "OK" Then 
37.
     
38.
    Set objFSO = CreateObject("Scripting.FileSystemObject")  
39.
    Set objFolder = objFSO.GetFolder("\\" & Rechner & "\\c$" & "\\Dokumente und Einstellungen")  
40.
 
41.
    Set objWMIService = GetObject("winmgmts:\\" & Rechner & "\root\CIMV2") 
42.
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _ 
43.
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly) 
44.
                                           
45.
        For Each objItem In colItems 'Änderungswürdig.. 
46.
          strUser = Right(objItem.Username,Len("Systor\")) 
47.
        Next 
48.
 
49.
DQ = """" 
50.
                                          
51.
      For Each Profile In objFolder.SubFolders  
52.
          Select Case (Profile.Name) 'Problem mit LCase() UCase() 
53.
            Case strUser 'username des eingeloggten Benutzers auslassen 
54.
              'msgBox Profile 
55.
            Case "Administrator"  
56.
              'msgBox Profile 
57.
            Case "All Users" 
58.
              'msgBox Profile  
59.
            Case "Default User"  
60.
              'msgBox Profile 
61.
            Case "LocalService" 
62.
              'msgBox Profile   
63.
            Case "NetworkService"  
64.
              'msgBox Profile 
65.
            Case Else  
66.
              'objfso.DeleteFolder Profile.Path, True ' geht leider nicht immer.. aus-remarked 
67.
 
68.
              objWSHShell.run "cmd /C RD /S /Q " & DQ & Profile.Path & DQ    'geht, will aber keine dos-prompt bzw. externes Programm 
69.
          End Select  
70.
      Next  
71.
          OutputFile.WriteLine("Rechner: " & Rechner & " bearbeitet." & vbrLF)         
72.
    Else 
73.
        'do nothing while Remote-PC is offline 
74.
        OutputFile.WriteLine("Rechner: " & Rechner & " ist offline." & vbrLF) 
75.
    End If 
76.
 
77.
Next 
78.
 
79.
 
80.
OutputFile.Close 
81.
 
82.
objWSHShell.run ("Loesch.txt"),1,true 
83.
 
84.
'Freigaben 
85.
Set objWSHShell = Nothing 
86.
Set objFSO = Nothing 
87.
Set objFolder = Nothing 
88.
 
89.
'************************************************************** 
90.
Function WMIping( PCName ) 
91.
'************************************************************** 
92.
Dim objPing, objStatus 
93.
            WMIping = "OK" 
94.
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & PCName & "'") 
95.
    For Each objStatus in objPing 
96.
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then 
97.
            WMIping = "-OK" 
98.
        End If 
99.
    Next 
100.
End Function 
101.
 
102.
 
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Ordner löschen mit Ausnahme (10)

Frage von Bugger zum Thema Batch & Shell ...

Windows 7
gelöst Alten Windows Ordner löschen (5)

Frage von Power-Poler zum Thema Windows 7 ...

Batch & Shell
gelöst Dateien (keine Ordner) löschen die älter sind als (4)

Frage von siziigilendirmez zum Thema Batch & Shell ...

Windows 10
Löschen von Ordner mit Dateien (3)

Frage von jerry32 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...