[delprof] Remote profielen opschonen.

Pagina: 1
Acties:
  • 1.422 views sinds 30-01-2008
  • Reageer

  • Bart©
  • Registratie: November 2003
  • Laatst online: 19-12 16:50
1. Ik heb de taak op me gekregen om op onze applicatie servers de lokale profielen op te schonen.
Omdat het om nogal veel servers gaat wil ik dit natuurlijk geautomatiseerd doen. Ik wil dus eigenlijk met delprof.exe remote de profielen verwijderen, maar, niet de lokale Adminitrator- en serviceaccountprofielen. Ik kan alleen nergens een switch of parameter vinden waarmee je een filter kunt toepassen op het delprof commando. Heeft iemand hier wèl ervaring mee? Het gaat voornamelijk om Windows Server 2003 machines met nog een enkele Windows 2000 Server.

2. En dan komen we bij probleem twee. Ik wil dit met een batch-file automatiseren, maar met het SET commando kan ik een variabele niet ophogen. SET TELLER=1 gaat goed, maar SET TELLER=%TELLER% + 1 werkt dus niet, is daar ook een oplossing voor?

3. Ik heb begrepen dat er naast een lokaal userprofile ook nog registry entries aanwezig zijn m.b.t. die desbetreffende user. Kan het problemen opleveren om gewoon de profiel-map te verwijderen op een Windows Server zonder de bijbehorende registry entries te verwijderen?

[ Voor 42% gewijzigd door Bart© op 13-09-2007 09:32 ]


  • nIghtorius
  • Registratie: Juli 2002
  • Laatst online: 17-12 16:14

nIghtorius

Poef!

de user registry settings (HKEY_LOCAL_USER) worden opgeslagen in de NTUSER.DAT bestand die op de root staat van een profiel.

b.v.

C:\Documents And Settings\JAN.DOMEIN\NTUSER.DAT

als je deze bestand verwijderd zijn dus ook alle USER registry settings van dat profiel weg.

of bedoel je iets compleet anders ?

Ryzen 9 5900X @ 5.1Ghz | MPG B550 GAMING CARBON | 96GB DDR4-3200 | RTX 4070TI | 2TB + 1TB m.2 SSD | 3x 1TB HDD | 1x 2TB SATA SSD | 32" G3223Q (4K/144Hz)


  • Marlibica
  • Registratie: Augustus 2002
  • Laatst online: 17-11 11:43

Marlibica

Tijd voor een ondertitel.

Delprof.exe uses the delprof /q /i /p /r /c:\\computer name /d:days syntax. You can use the following parameters with Delprof.exe:

/q: This parameter runs Delprof.exe in quiet mode. When you use this parameter, you are not prompted to confirm the deletion of each profile.

/i: This parameter ignores any errors that may occur.

/p: This parameter specifies that a message is displayed that prompts you to confirm the deletion of each profile.

/r: This parameter specifies that delete the roaming profile cache only. Local profiles on the machine will not be deleted.

/c:\\computer name: This parameter specifies the computer name on which to run Delprof.exe.

/d:days: This parameter specifies the number of days after which Delprof.exe considers the profiles as inactive. Profiles that have not been used for a period of time that is longer than the specified value are deleted.
Denk dus niet dat je kunt filteren

Sign here against sigs


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Bart_NL schreef op donderdag 13 september 2007 @ 09:05:
1. Ik heb de taak op me gekregen om op onze applicatie servers de lokale profielen op te schonen.
Omdat het om nogal veel servers gaat wil ik dit natuurlijk geautomatiseerd doen. Ik wil dus eigenlijk met delprof.exe remote de profielen verwijderen, maar, niet de lokale Adminitrator- en serviceaccountprofielen.
De serviceaccount profielen zijn als het goed is in use - bovendien kan je aan delprof meegeven enkel de 'cached' roaming profielen weg te gooien?
2. En dan komen we bij probleem twee. Ik wil dit met een batch-file automatiseren, maar met het SET commando kan ik een variabele niet ophogen. SET TELLER=1 gaat goed, maar SET TELLER=%TELLER% + 1 werkt dus niet, is daar ook een oplossing voor?
Waarom zou je uberhaupt willen tellen? Als je het echt geautomatiseerd wil doen, zou ik voor een 'dsget' oid op computer niveau gaan waarbij je je server OU(s) queried en die afgaat, of anders om een simpele textfile die je parseert met het 'for' commando? :)
3. Ik heb begrepen dat er naast een lokaal userprofile ook nog registry entries aanwezig zijn m.b.t. die desbetreffende user. Kan het problemen opleveren om gewoon de profiel-map te verwijderen op een Windows Server zonder de bijbehorende registry entries te verwijderen?
Tis niet de gewenste manier :)

  • dmace
  • Registratie: December 2000
  • Laatst online: 31-07-2022
Ik heb deze code 'geschreven' (ie. bij elkaar geraapt en aangepast)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Set oFS = CreateObject("Scripting.FileSystemObject") 
Set oTS = oFS.OpenTextFile("c:\test\script\testpca.txt") 
Do Until oTS.AtEndOfStream 
strComputer = oTS.ReadLine 
arrPCs = Split(strNextLine , VbCrLf)

On Error Resume Next

Dim strTarget, strPingResults
strTarget = strComputer 

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("ping -n 3 -w 2000 " & strTarget) 'send 3 echo requests, waiting 2secs each
strPingResults = LCase(WshExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
  WScript.Echo strTarget & " responded to ping."  
  Call Delpro
Else
  WScript.Echo strTarget & " did not respond to ping."
End If

Loop
oTS.Close 
WScript.Quit 

Function Delpro 
Dim strAnswer
Set wshell = WScript.CreateObject("WScript.Shell") 
Set WshDo = wshell.Exec ("delprof /Q /I /c:\\" & strComputer & "/D:2")
strAnswer = LCase(WshDo.StdOut.ReadAll)
If InStr(strAnswer, "Deleting") Then
    WScript.echo strComputer & " was cleaned."
Else
    WScript.Echo strComputer & " could not be cleaned. Access Denied!!!"
End If
WScript.Sleep(2000)
'Next
End Function


Helaas blijft het delprof-commando hangen. wshell.Run doet het wel, maar geeft geen responses terug. Iemand die weet wat ik fout doe. Ben niet zo'n scriptkiddie.

>Select * FROM users WHERE clue > 0


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Ik zou dan eerst de commandline eens laten terug-echo'en zodat ie ziet of de parameters ook correct door je script worden doorgegeven.

(hint: spaties)


Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function Delpro 
Dim strAnswer
Set wshell = WScript.CreateObject("WScript.Shell") 

'Set WshDo = wshell.Exec ("delprof /Q /I /c:\\" & strComputer & "/D:2")

Wscript.Echo "delprof /Q /I /c:\\" & strComputer & "/D:2"

strAnswer = LCase(WshDo.StdOut.ReadAll)
If InStr(strAnswer, "Deleting") Then
    WScript.echo strComputer & " was cleaned."
Else
    WScript.Echo strComputer & " could not be cleaned. Access Denied!!!"
End If
WScript.Sleep(2000)
'Next
End Function






Edit:

Crossposten wordt ook hier niet echt gewaardeerd overigens.

[ Voor 67% gewijzigd door alt-92 op 08-08-2008 12:50 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • dmace
  • Registratie: December 2000
  • Laatst online: 31-07-2022
Thanks. crosspost was niet bedoeld alszodanig. Zal het niet meer doen. O-)

>Select * FROM users WHERE clue > 0


  • Qwerty-273
  • Registratie: Oktober 2001
  • Laatst online: 02:07

Qwerty-273

Meukposter

***** ***

Open doel, schiet, en scoort :
Visual Basic:
1
"delprof /Q /I /c:\\" & strComputer & " /D:2")

of te wel een spatie voor je /D:2 ......

Erzsébet Bathory | Strajk Kobiet | You can lose hope in leaders, but never lose hope in the future.


  • dmace
  • Registratie: December 2000
  • Laatst online: 31-07-2022
Qwerty-273 schreef op vrijdag 08 augustus 2008 @ 14:32:
[...]

Open doel, schiet, en scoort :
Visual Basic:
1
"delprof /Q /I /c:\\" & strComputer & " /D:2")

of te wel een spatie voor je /D:2 ......
|:( |:( het is vrijdag, he? Thanks.

>Select * FROM users WHERE clue > 0


  • dmace
  • Registratie: December 2000
  • Laatst online: 31-07-2022
Nou, hij werkt, en ik ben er best tevreden mee.
Om dit script ook voor anderen bruikbaar te maken, plaats ik het nogmaals hierzo.
Iedereen nog bedankt voor de hulp.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
' Script for deleting profiles remotely

Set oFS = CreateObject("Scripting.FileSystemObject") 
Set oTS = oFS.OpenTextFile("c:\test\script\testpca.txt") 
Set oDrives = oFS.Drives
strD = 0
Do Until oTS.AtEndOfStream 
strComputer = oTS.ReadLine 
arrPCs = Split(strNextLine , VbCrLf)

On Error Resume Next

Dim strTarget, strPingResults
strTarget = strComputer 

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("ping -n 3 -w 2000 " & strTarget) 'send 3 echo requests, waiting 2secs each
strPingResults = LCase(WshExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
  WScript.Echo strTarget & " responded to ping."  
  Call Delpro
Else
  WScript.Echo strTarget & " did not respond to ping."
End If

Loop
oTS.Close 

WScript.Echo "A total of " & Int(strD) & " MB was made available." & VbCrLf

WScript.Quit 

Function Delpro 
'checking Harddrivespace Before
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer)
Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='c:'")
strA = objLogicalDisk.FreeSpace
' Cleaning Old Profiles
Dim strAnswer
Set wshell = WScript.CreateObject("WScript.Shell") 
Set WshDo = wshell.Exec ("delprof /Q /c:\\" & strComputer & "/D:2")
strAnswer = LCase(WshDo.StdOut.ReadAll)
If InStr(strAnswer, "Access") Then
    WScript.echo strComputer & " could not be cleaned. Access Denied!!!"
Else
    WScript.Echo strComputer & " was cleaned."
End If
'checking Harddrivespace again
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer)
Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='c:'")
strB = objLogicalDisk.FreeSpace
' Count difference in diskspace and echo.
strC = (strB - strA) / 1048576
'FreeMegaBytes = objLogicalDisk.FreeSpace / 1048576
'WScript.Echo Int(FreeMegaBytes)
'WScript.Echo strComputer & " now has " & strC & " MB more space."
WScript.Echo strComputer & " now has " & Int(strC) & " MB more space."
strD = strD + strC
'wait for it
WScript.Sleep(2000)
End Function

>Select * FROM users WHERE clue > 0


  • Harold_S
  • Registratie: Februari 2002
  • Laatst online: 02-03 19:33
Zou het mogelijk zijn om in dit script een aantal profielen te excluden ook al zijn ze langere tijd al niet ingelogd?

Ik heb verder geen ervaring met scripten maar moet wel voor mijn werk een oplossing zien te vinden voor het verwijderen van profielen die langere tijd niet zijn gebruikt.
Echter van onze deployment is er een account wat er niet af mag.

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Harold_S schreef op dinsdag 02 september 2008 @ 11:44:
Zou het mogelijk zijn om in dit script een aantal profielen te excluden ook al zijn ze langere tijd al niet ingelogd?
Genereer je inputlijst aan de hand van userID's met een lastlogon?
Of je doet eerst een check op lastlogon vóórdat je de cleanup laat lopen.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • Harold_S
  • Registratie: Februari 2002
  • Laatst online: 02-03 19:33
alt-92 schreef op dinsdag 02 september 2008 @ 12:26:
[...]

Genereer je inputlijst aan de hand van userID's met een lastlogon?
Of je doet eerst een check op lastlogon vóórdat je de cleanup laat lopen.
Het enige wat ik kan generen aan lijst is een lijst met computernamen :| . Die pc's wil ik scannen op profielen die niet worden gebruikt voor een bepaalde tijd. Deze mogen worden verwijderd op een aantal uitzonderingen van profielen na. Maar zover ik heb begrepen kan dat niet met delprof.

Zojuist heeft mijn collega _/-\o_ het volgende gevonden
http://www.optimumx.com/download/#DeleteProfiles.

Eens kijken of het daar wel mee gaat lukken.
Of heb je een manier gevonden dat het met delprof ook zou lukken

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Harold_S schreef op dinsdag 02 september 2008 @ 13:05:

Het enige wat ik kan generen aan lijst is een lijst met computernamen :| . Die pc's wil ik scannen op profielen die niet worden gebruikt voor een bepaalde tijd. Deze mogen worden verwijderd op een aantal uitzonderingen van profielen na. Maar zover ik heb begrepen kan dat niet met delprof.
Maar vóórdat je delprof het werk laat doen op het betreffende profiel kun je toch zelf een check scripten die kijkt wat de last logon is geweest van de desbetreffende user? :)

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • Harold_S
  • Registratie: Februari 2002
  • Laatst online: 02-03 19:33
Ik wil tenminste 2 profielmappen skippen die ongeacht de datum op geen enkele pc mogen worden verwijderd.
Dus al zijn ze een jaar niet ingelogd geweest, toch mogen ze niet weg. O-)

Volgens mij praten we een beetje langs elkaar heen, maar we komen er wel :P

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

En die stop je in een exception list.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device

Pagina: 1