[VBS] opschonen van bepaalde user profile bestanden

Pagina: 1
Acties:
  • 705 views

Acties:
  • 0 Henk 'm!

  • FiXxXeR39
  • Registratie: Juni 2003
  • Laatst online: 05-06 19:38

FiXxXeR39

FiXxXeR wants to fix things

Topicstarter
Ik zal eerst uitleggen wat voor probleem ik heb. We hebben een redelijk grote omgeving waar mensen om het uur inloggen op andere Windows XP (SP3) machine's. Iedereen binnen de organisatie heeft een profiel die hij/zij meeneemt naar een adere PC als diegene elders inlogd. Echter komt het zo links en rechts voor dat het profiel lokaal (c:\documents and setting\user x) blijft bestaan. Als de persoon in kwestie weer inlogd op een PC waar hij/zij eerder heeft gewerkt en het profiel is niet lokaal verwijderd van zijn/haar profiel, dan kunnen er rare dingen gebeuren. Om dit te voorkomen zou ik graag een VBS script willen die de boel tijdens het inloggen verwijderd. Het script mag de volgende profielen NIET opgeschonen:

- 'eigen account waarmee wordt ingelogd'
- Administrator
- All Users
- Default User
- LocalService
- NetworkService

Hier het volgend script:

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Documents and Settings")
For Each Profile In oFolder.SubFolders
Select Case UCase(Profile.Name)
Case "Administrator", "All Users", "Default User", "LocalService", "NetworkService"
'Do nothing
Case Else
oFSO.DeleteFolder Profile.Path, True
End Select
Next


Hoe kan ik zorgen dat het account waarmee ik inlog niet wordt verwijderd ?
Kan iemand mij hiermee op weg helpen ?

FiXxXeR


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:04
Met de Windows API de ingelogde gebruikersnaam ophalen:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function UserName() As String
'
' returns username
'
Dim strTemp As String, strUserName As String
    
    'Create a buffer
    strUserName = String$(100, Chr$(0))
    'Get the username
    GetUserName strUserName, 100
    'strip the rest of the buffer
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)

    UserName = strUserName

End Function


Dan weet je de huidige ingelogde gebruiker en dus welke je niet mag verwijderen.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • bgrr
  • Registratie: Oktober 2001
  • Niet online
Waarom gebruik je niet een GPO dat het roaming profile weer verwijderd wordt van de computer bij het uitloggen ?

Hierdoor wordt bij iedere login netjes het roaming profile opgehaald van de server en bij het uitloggen wordt dit weer netjes verwijderd van de computer en opgeslagen op de server. Je krijgt dus nooit problemen dat bij inloggen op meerdere computers de roaming profiles van mergen.

Using Group Policy to delete cached copies of roaming profiles


Dit werkt een stuk beter dan lopen rommelen met vbs script om tijdens het inloggen profiles te verwijderen.
Zowie lukt het je niet om het actieve profile te verwijderen omdat een aantal bestanden zoals ntuser.dat e.d in gebruik zijn.

[ Voor 110% gewijzigd door bgrr op 06-04-2009 10:28 ]


Acties:
  • 0 Henk 'm!

  • FiXxXeR39
  • Registratie: Juni 2003
  • Laatst online: 05-06 19:38

FiXxXeR39

FiXxXeR wants to fix things

Topicstarter
Je hebt gelijk bgrr, echter werkt de GPO van Microsoft werkt ook niet vlekkeloos, dit VBscript is dus als extra inzet. Echter zit er nog een fout in m'n script, iemand nog een idee ?


Modbreak:M$, Windhoos, e.d. :|

[ Voor 31% gewijzigd door RobIII op 06-04-2009 11:50 ]

FiXxXeR


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

GPO werkt in mijn geval prima!

Ik heb net even een test account aangemaakt op 2k8 en ingelogd in het domein en na het uitloggen is niets meer terug te vinden van de account.

Daarnaast kun je nooit het account weggooien waarmee je bezig bent ivm geblokte bestanden, de uitloggende gebruiker is immers nog actief volgens het systeem.

Ik zal MS (waarom met een $ btw, vind ik altijd kinderachtig en getuigt niet van professioneel gedrag) de klus laten klaren, want hier doet de GPO het prima! :D

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • FiXxXeR39
  • Registratie: Juni 2003
  • Laatst online: 05-06 19:38

FiXxXeR39

FiXxXeR wants to fix things

Topicstarter
Tuurlijk werkt de oplossing van MS goed. Echter betreft het hier een organisatie waar leerlingen wel eens op de resetknop drukken. Dan gaat je GPO niet op. Dus wil ik dit implementeren als extra oplossing bij inloggen.

FiXxXeR


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Als jij de code van urk_forever blind hebt overgenomen, dan gaat het inderdaad niet werken. VBS <> VB.
Geef voor de vorm nog eens de code tot nu toe.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code post: code tags

Verder:
VBScript:
1
2
3
Select Case UCase(Profile.Name)
Case "Administrator", "All Users", "Default User", "LocalService", "NetworkService"
...


Goh; waar zou de fout zitten? :X * RobIII wijst naar UCase en "Administrator", "All Users", ... :X (Los van het feit dat ik "Profile" als de for-each iterator nogal verwarrend vindt; gebruik liever "subfolder" ofzo.

En tot slot: we schrijven Microsoft hier gewoon op de volwassen manier ;)

[ Voor 28% gewijzigd door RobIII op 06-04-2009 12:20 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • FiXxXeR39
  • Registratie: Juni 2003
  • Laatst online: 05-06 19:38

FiXxXeR39

FiXxXeR wants to fix things

Topicstarter
Hierbij mijn code tot nu toe (let op, ik kan nu 1 usermap (test) verwijderen):

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
' Set up the scripting environment
Option Explicit
Const oSrc = "C:\Documents and Settings\test"
Dim Text, Title
Dim WSH, FSO, oFolders, oFolder, oSubFolders ' Object variables
Dim oFileCount, oFolderCount, oFiles, oCount
Text = "Folders" & vbCrLf & vbCrLf
' Dialog title (inc. vanity bit)
Title = "Student Profile Deleter"

' Create Windows Scripting Host Shell object
Set WSH = WScript.CreateObject("WScript.Shell")
' Create FileSystem object to access the file system.
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")

'Delete the folder (forcibly, to handle read-only attributes)
FSO.DeleteFolder oSrc,True

'Free memory used by objects
Set WSH = Nothing
Set FSO = Nothing


WScript.Quit()


Dit is de code tot nu toe.
Even over Microsoft, ik heb helemaal niks tegen ze ;)

FiXxXeR


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ja? En? Dus? En nu? Wat verwacht je nu van ons? Dat we je handje blijven vasthouden? Heb je al iets gedaan met de opmerkingen die je so-far hebt gehad? En wat waren je bevindingen? En wat is het doel van de code die je nu post? Werkt die (ook) niet? Of...?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • FiXxXeR39
  • Registratie: Juni 2003
  • Laatst online: 05-06 19:38

FiXxXeR39

FiXxXeR wants to fix things

Topicstarter
Doel van de code die ik gepost heb, is het beantwoorden van de volgende vraag die me gesteld werd door Bigbeng:
Als jij de code van urk_forever blind hebt overgenomen, dan gaat het inderdaad niet werken. VBS <> VB.
Geef voor de vorm nog eens de code tot nu toe.
Mijn code verwijderd de gebruiker 'test'. Echter zou ik graag zien dat alles verwijderd wordt behalve de volgende van de volgende account:

- het account waarmee wordt ingelogd'
- Administrator
- All Users
- Default User
- LocalService
- NetworkService

Verder ben ik een noob op het gebied van programmeren, dus vraag ik jullie hulp om een script verder aan te passen, om dit werkend te krijgen. Het script werkt dus wel, echter alleen voor het account 'test' omdat ik deze expliciet opgeef. Dit zou ik dus graag aangepast zien.

FiXxXeR


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
FiXxXeR39 schreef op maandag 06 april 2009 @ 13:52:
Verder ben ik een noob op het gebied van programmeren, dus vraag ik jullie hulp om een script verder aan te passen, om dit werkend te krijgen. Het script werkt dus wel, echter alleen voor het account 'test' omdat ik deze expliciet opgeef. Dit zou ik dus graag aangepast zien.
En ik heb je al eerder verteld dat je die aanpassingen zélf zult moeten maken; we doen hier niet aan scriptrequests, noch het stapje voor stapje voorkauwen wat je moet doen. We verwachten hier in PRG wel enige kennis; als je die niet hebt is dat ook geen ramp: ieder z'n vak. Maar besteed het dan uit aan iemand die er wél kaas van heeft gegeten of verdiep je in de materie. We gaan hier geen persoonlijke begeleiding op je project geven.

Ik zie trouwens ook niet hoe urk_forever's code verwerkt is in je "geleende" stukje code van het web (niet dat het überhaupt van toepassing is overigens). En je weet dat we geen support geven op code van derden?

Je post hier je "wensen" waar je script aan moet voldoen en wij mogen het even voor je afmaken of uitschrijven. Zo werkt het niet in PRG ;)

[ Voor 22% gewijzigd door RobIII op 06-04-2009 13:58 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.