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, 3417 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
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 1 TagHumor (lol)4 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 1 TagExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 2 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 3 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke15 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Webbrowser
Neuer Tab Firefox
gelöst Frage von BleifussWebbrowser12 Kommentare

Hallo, via Strg + T öffnet man ja einen neuen Tab. Gibt es die Möglichkeit, dass der Tab sich ...

Windows Server
WSUS nach Upgrade - kein Start mehr
gelöst Frage von Ghost108Windows Server9 Kommentare

Hallo zusammen, habe einen Windows Server 2012 welcher als WSUS dienst. Jetzt wurde ein Upgrade auf Server 2016 durchgeführt ...

Microsoft
Ist es möglich ein reines Volume C Datenbackup in eine Hyper-V VM zu konvertieren?
Frage von Frank84Microsoft8 Kommentare

Hallo zusammen, ich habe hier ein Backup vorliegen, das ausschließlich das komplette C:\ Volume eines physischen Server 2012 enthält. ...