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, 3410 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?

Entwicklung

Hardwareinformation Skript

Frage von Silent08Entwicklung2 Kommentare

Huhu suche zur Inventarisierung der Client Rechner unseres Unternehmens ein Skript, welches die Hardwareinformationen der Clients ausliest und diese ...

Batch & Shell

Reporting Skript

Frage von TlBERlUSBatch & Shell

Hallo Zusammen, ich habe mal, um des Lernens und Monitoring willens, ein kleineres Skript geschrieben, welches ich in der ...

Batch & Shell

Backup Skript

gelöst Frage von DavidMueBatch & Shell18 Kommentare

Guten Tag, Ich habe wieder einmal eine Skripting aufgabe im Unterricht bekommen, ohne einen Ansatzpunkt zu haben. (Bin nicht ...

Neue Wissensbeiträge
Cloud-Dienste

Neue Exchange Online und Office 365 Limits ab 01.06.2018

Tipp von decathlon vor 54 MinutenCloud-Dienste

Achtung für alle Exchange Online Nutzer die es vielleicht übersehen haben. Ab 01. Juni gilt folgendes neues Limit User ...

Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 1 TagHumor (lol)3 Kommentare

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 2 TagenAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Voice over IP

Rufnummernblock aufbrechen nun möglich bei DTAG

Tipp von Datenreise vor 2 TagenVoice over IP

Bei der Telekom ist es seit einigen Tagen laut Aussage der Geschäftskunden-Hotline möglich, eine Rufnummernübernahme auch dann durchzuführen, wenn ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Wieviel Lüfter hat ein HP Elitebook 8730w ?
Frage von -WeBu-CPU, RAM, Mainboards8 Kommentare

Guten Morgen, gestern Abend hat sich bei meinem HP ein/der Lüfter hörbar abgeschaltet oder stark runter geregelt, obwohl das ...

Batch & Shell
Brauche hilf bei einer batch Datei
gelöst Frage von PilllllleBatch & Shell7 Kommentare

hallo, ich versuche mit Hilfe von einer batch- Datei eine bestimmt Zeile aus einer txt- Datei in eine neue ...

Windows Server
Passwort für Terminalserver-Login über IGEL-Client neu vergeben ?
gelöst Frage von WernimanWindows Server6 Kommentare

Hallo, ich bin -verglichen mit euch- ein absoluter Rookie in der Branche, habe aktuell seit meiner Ausbildung gerade den ...

Outlook & Mail
Aufgabenfilter in Outlook
Frage von jensgebkenOutlook & Mail5 Kommentare

Hallo Gemeinschaft, habe ein exchange konto eingerichtet, auf welches drei Mitarbeiter zugreifen - Ich möchte dieses Konto auch gerne ...