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, 3418 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

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
Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 48 MinutenHardware

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Sicherheit

Oracle gibt kritische Updates für diverse Produkte frei (16. Oktober 2018)

Information von kgborn vor 11 StundenSicherheit

Oracle hat zum 16. Oktober 2018 eine ganze Reihe an kritischen Updates für seine Produkte freigegeben. Eine Kurzübersicht mit ...

Windows 10
FYI: Fristen beim Windows 10 Downgrade-Recht
Information von kgborn vor 11 StundenWindows 10

Möglicherweise ist das bei euch bekannt - ich habe es gerade aus einem Newsletter eines OEMs herausgefischt. Beim Downgrade-Recht ...

CMS
Freie Wähler Bayern MySQL PW online
Information von sabines vor 14 StundenCMS6 Kommentare

Die Typo3 Installation der Freien Wähler Bayern scheint wohl längere Zeit nicht mehr angefasst und/oder fehlkonfiguriert zu sein. Nach ...

Heiß diskutierte Inhalte
Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1021 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Internet
Ist diese URL denkbar (Syntax)?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Der Sohn eines Arbeitskollegen hat im Gymnasium EDV-Unterricht. Leider hat er in der letzten Klassenarbeit einen Fünfer geschrieben. ...

Exchange Server
Outlook Anywhere - Anmeldefenster muss mit Domain gefüllt werden
Frage von leon123Exchange Server15 Kommentare

Hallo zusammen, ich habe relativ erfolgreich einen Exchange 2016 aufgesetzt, sowie ein SAN-Zertifikat eingespielt und Outlook Anywhere aktiviert. Beim ...

Debian
Linux debian 9 Installation
Frage von Green14Debian15 Kommentare

Hallo zusammen, ich habe mich ein wenig mit Debian auseinandergesetzt und möchte mir eine Standard-Installation als Grundlage für andere ...