Top-Themen

Aktuelle Themen (A bis Z)

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

gelöst Skript zum setzen von mehr als 8 LoginWorkstations

Mitglied: hawaiixxx

hawaiixxx (Level 1) - Jetzt verbinden

31.01.2008, aktualisiert 23:38 Uhr, 3424 Aufrufe, 1 Kommentar

Server 2000: Mit dem Befehl "NET USER ... /WORKSTATIONS:..." kann man maximal 8 Workstation setzen, auf denen sich ein Benutzer anmelden kann. Mit diesem VBS-Skript sind es beliebig viele!

01.
set args=WScript.Arguments
02.
dim usr
03.
dim Benutzer
04.
if args.Count=1 then
05.
	Benutzer=args(0)
06.
	Set usr = GetObject("WinNT://[Domain-Name]/"&Benutzer&",user")
07.
	usr.Put "LoginWorkstations", "pc01,pc02,pc03,pc04,pc05,pc06,pc07,pc08,pc09,pc10"
08.
	usr.SetInfo
09.
end if
10.
'Msgbox "OK:"&usr.PasswordExpired
11.
'if args.Count=1 then Msgbox "OK:"&args(0)
12.
'if args.Count>1 then Msgbox "Zu viele Parameter!"
Mitglied: bastla
31.01.2008 um 23:37 Uhr
Hallo hawaiixxx!

Etwas flexibler wäre es so:
01.
'SetLoginWS.vbs
02.
 
03.
'Const strDomain = "domain.local"
04.
 
05.
Const U = "U"
06.
Const C = "C"
07.
Const UC = "UC"
08.
 
09.
Const ForReading = 1
10.
 
11.
If strDomain = "" Then 'Konstante nicht gesetzt, daher Domäne ermitteln
12.
	Set objRootDSE = GetObject("LDAP://RootDSE")
13.
	strDNSDomain = objRootDSE.Get("DefaultNamingContext")
14.
	strDomain = Mid(Replace(strDNSDomain, ",DC=", "."), 4)
15.
End If
16.
 
17.
Set objFSO = CreateObject("Scripting.FileSystemObject")
18.
 
19.
Set argsNamed = WScript.Arguments.Named
20.
Set argsUnnamed = WScript.Arguments.Unnamed
21.
 
22.
If argsNamed.Exists(UC) Then 'Variante Users & Clients in Liste
23.
	UCL = argsNamed.Item(UC)
24.
	If objFSO.FileExists(UCL) Then 'Listendatei vorhanden
25.
		arrUsersClients = Split(objFSO.OpenTextFile(UCL, ForReading).ReadAll, vbCrLF)
26.
		For Each strUserClient In arrUsersClients 
27.
			arrUC = Split(strUserClient, ";") 'jede Zeile enthält "User;Clientliste" - daher aufteilen ...
28.
			SetWS arrUC(0), arrUC(1) ' ... und eintragen
29.
		Next
30.
	Else 'Listendatei nicht vorhanden
31.
		WScript.Echo Chr(34) & UL & Chr(34) & " konnte nicht gefunden werden."
32.
		WScript.Quit(2)
33.
	End If
34.
Else 'getrennte Angabe von Users und Clients
35.
	intArgPosC = 0 'für "User als Parameter angegeben"
36.
	If argsNamed.Exists(U) Then 'Datei mit Userliste angegeben
37.
		UL = argsNamed.Item(U)
38.
		If objFSO.FileExists(UL) Then
39.
			arrUsers = Split(objFSO.OpenTextFile(UL, ForReading).ReadAll, vbCrLF)
40.
		Else
41.
			WScript.Echo Chr(34) & UL & Chr(34) & " konnte nicht gefunden werden."
42.
			WScript.Quit(2)
43.
		End If
44.
	Else
45.
		If argsUnnamed.Count > 0 Then 'User(liste) als Argument übergeben
46.
			arrUsers = Split(argsUnnamed(0), ",")
47.
			intArgPosC = 1
48.
		Else
49.
			Usage
50.
			WScript.Quit(1)
51.
		End If
52.
	End If
53.
 
54.
	If argsNamed.Exists(C) Then 'Datei mit Clientliste angegeben
55.
		CL = argsNamed.Item(C)
56.
		If CL <> "" Then
57.
			If objFSO.FileExists(CL) Then
58.
				arrClients = Split(objFSO.OpenTextFile(CL, ForReading).ReadAll, vbCrLF)
59.
				strClients = Join(arrClients, ",")
60.
			Else
61.
				WScript.Echo Chr(34) & CL & Chr(34) & " konnte nicht gefunden werden."
62.
				WScript.Quit(2)
63.
			End If
64.
		End If
65.
	Else
66.
		If argsUnnamed.Count > intArgPosC Then 'Clientliste als Argument angegeben; Index abhängig von Art der Userangabe
67.
			strClients = argsUnnamed(intArgPosC)
68.
		Else
69.
			Usage
70.
			WScript.Quit(1)
71.
		End If
72.
	End If
73.
 
74.
	For Each strUser in arrUsers 'für jeden einzelnen User die Clientliste eintragen
75.
		SetWS strUSer, strClients
76.
	Next
77.
End If
78.
 
79.
Sub SetWS(strU, strC)
80.
On Error Resume Next 'Errorhandling einschalten
81.
Set objUsr = GetObject("WinNT://" & strDomain & "/" & strU & ",user")
82.
If Err.Number = 0 Then
83.
	WScript.Echo objUsr.Name & ":" &vbTab & strC
84.
	objUsr.Put "LoginWorkstations", strC
85.
	objUsr.SetInfo
86.
Else
87.
	WScript.Echo strU & ":" & vbTab & "Workstationliste nicht eingetragen!"
88.
End If
89.
On Error Goto 0 'Errorhandling wieder ausschalten
90.
End Sub
91.
 
92.
Sub Usage
93.
WScript.Echo "Usage: " & WScript.ScriptFullName & " /UC:UserAndClientListFile | {{User[,User] | /" & U & ":UserListFile} {Client[,Client] | /" & C & ":ClientListFile}}"
94.
End Sub
Durch die Verwendung benannter Argumente kannst Du sowohl für die zu bearbeitenden Benutzer und -innen, als auch für die einzutragenden Workstations entweder eine (durch Kommata getrennte) Liste oder eine Datei (mit einem Eintrag je Zeile) übergeben. Daraus ergeben sich exemplarisch folgende Einsatzmöglichkeiten:
01.
cscript //nologo C:\Scripts\SetLoginWS.vbs Benutzerin pc01,pc02,pc03,pc04,pc05,pc06,pc07,pc08,pc09,pc10
02.
cscript //nologo C:\Scripts\SetLoginWS.vbs Benutzer1,Benutzerin2 pc01
03.
cscript //nologo C:\Scripts\SetLoginWS.vbs /U:D:\BenutzerInnen.txt pc01,pc02,pc03,pc04,pc05,pc06,pc07,pc08,pc09,pc10
04.
cscript //nologo C:\Scripts\SetLoginWS.vbs Benutzer /C:D:\Workstations.txt
05.
cscript //nologo C:\Scripts\SetLoginWS.vbs Benutzerin1,Benutzer2,Benutzerin3 /C:D:\Workstations.txt
06.
cscript //nologo C:\Scripts\SetLoginWS.vbs /U:D:\BenutzerInnen.txt /C:D:\Workstations.txt
07.
cscript //nologo C:\Scripts\SetLoginWS.vbs Benutzerin1,Benutzerin2 ""
Eine Workstationangabe "" bedeutet, dass eine Anmeldung an allen Workstations wieder erlaubt wird.

Schließlich soll auch die Variante "individuelle Liste von Workstations je BenutzerIn" nicht vergessen werden:
01.
cscript //nologo C:\Scripts\SetLoginWS.vbs /UC:"D:\B und W.txt"
Hierzu muss die übergebene Datei (im Beispiel "D:\B und W.txt") zeilenweise wie folgt aufgebaut sein:
01.
BenutzerIn;Workstation[,Workstation]
Soferne die Domäne vorgegeben werden soll, kann dies durch die erste "Const"-Zeile erreicht werden (Kommentarzeichen entfernen nicht vergessen ), ansonsten wird in der aktuellen Domäne gesucht.

Noch ein Hinweis: Da mehrere Argumente zu übergeben sind, wird der Aufruf ohnehin über CMD (direkt an der Kommandozeile oder als Batch) erfolgen - insofern bietet es sich an, "cscript" zu verwenden, nicht zuletzt, da sich so die Ausgaben auch leicht in eine Log-Datei umleiten lassen.

Grüße
bastla

P.S.: Die Idee zu dieser "Flexibilisierung" ist mir gekommen, als ich mich fragte, warum Du nur (exakt) ein Argument zulassen wolltest (if args.Count=1 then) - alle weiteren hättest Du ja einfach ignorieren können ...
Bitte warten ..
Ähnliche Inhalte
Microsoft

Suche Skript, um die DPI in Windows 7 oder 8 anzupassen

Frage von DerWoWussteMicrosoft4 Kommentare

Ich grüße alle Admins! Hat jemand hier ein Skript oder Kommandozeilentool auf Lager, welches die System-Schriftgröße unter Windows anpasst?

Windows Tools

Bildschirmausgabe bei einem Skript bei Windows 7, 8 und 10 beim herunterfahren über GPO?

Frage von StefanKittelWindows Tools7 Kommentare

Hallo, Für ein Projekt wird beim herunterfahren ein Powershell Skript ausgeführt. Dies führt Datensicherung, Updates und Sicherheitschecks aus. Ich ...

Batch & Shell

Batch-Skript anpassen

gelöst Frage von Sideshow88Batch & Shell9 Kommentare

Hallo liebe Community, ich möchte gerne ein Batch-Skript, welches den Status diverser Krankenhausschnittstellen anzeigt, dahingehen ändern, dass es einen ...

Batch & Shell

Batch Skript erweitern

Frage von michi-ffmBatch & Shell1 Kommentar

Hallo zusammen, ich hänge jetzt schon seid Tagen dieses Skript zu erweitern, kann mir evtl jemand weiterhelfen? Er soll ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 3 TagenHumor (lol)6 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 7 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 7 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore30 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows Server
Kleine Umfrage: Windows Server Desktop oder Core?
Frage von doomfreakWindows Server15 Kommentare

Hey :) Ich wollte mal eine kleine Umfrage hier starten. Ich bin schon etwas länger auf dieser Seite hier ...

JavaScript
Javascript: WebSql
gelöst Frage von internet2107JavaScript15 Kommentare

Guten Morgen zusammen, zunächst einmal einen schönen dritten Advent. Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ...