Windows:ifmember+ismember
Aus znilwiki
ifmemberDELUXE.exe -> eine alternative zu ifmember.exe und ismember.exe für das Verbinden von Netzlaufwerken und Druckern
ifmember.exe
Microsoft hat schon zu Windows NT 4.0 Zeiten das Kommandozeilenprogramm ifmember.exe zur verfügung gestellt.
Es ist/war unter anderem in dem Windows NT 4.0 Ressource Kit enthalten, heutzutage kann es auch direkt heruntergeladen werden:
Download ifmember.exe: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=07c2f6d7-815e-4fa0-9043-4e4635ccd417
Der Aufruf ist ganz leicht:
D:\>ifmember.exe usage: IFMEMBER.EXE [/verbose] [/list] groupname ... /verbose will print out all matches. /list will print out all groups user is a member of. Return Code shows number of groups this user is a member of. Example: IFMEMBER.EXE /v /l "MyDomain\Domain Users" Users Everyone
Mit folgenden Aufruf listet ifmember.exe alle zugehörigen Gruppen auf:
ifmember.exe /list
ergibt eine Ausgabe wie folgt:
D:\>ifmember.exe /list User is a member of group testdomain\Domänen-Benutzer. User is a member of group testdomain\Testgruppe.
In Batchdateien ruft man ifmember.exe einfach mit dem Gruppennamen auf:
D:\>ifmember.exe Administratoren
und es passiert - nichts.
Fragen wir danach jedoch die Variable %ERRORLEVEL% ab:
D:\>echo %ERRORLEVEL% 1
wir die Zahl 1 ausgegeben.
ifmember.exe gibt einen der folgenden 3 Fehlercodes zurück:
0 = ist nicht Mitglied der abgefragten Gruppe 1 = ist Mitglied der abgefragten Gruppe -1 = Gruppenmitgliedschaft kann nicht abgefragt werden
-1 kommt vor wenn ein Benutzer in sehr vielen Gruppen ist (>100 scheinbar), auch dieser Fall sollte dann in Abfragen berücksichtigt werden.
Beispielscript aus der Praxis:
Im nachfolgendem Script starten wir abhängig von der Mitgliedschaft in der Gruppe JP_Migration entweder die alte oder die neue Version einer .exe Datei:
REM JumpingProfiles starten REM Neue Version 4.0 wenn Benutzer in der Gruppe JP_Migration ist REM ansonsten alte Version 2.19 wie gehabt REM 2010 von Bernhard Linz, Bernhard.Linz@datagroup.de \\server\freigabe\tools\ifmember\IFMEMBER.EXE JP_Migration Goto ANTWORT%ERRORLEVEL% :ANTWORT0 REM Ist nicht Mitglied der Gruppe JP_Migration, also alte Version 2.19 starten \\server\freigabe\JP\JPLogin.exe Goto ANTWORTENDE :ANTWORT1 REM Ist Mitglied der Gruppe JP_Migration, also neue Version 4 starten \\server\freigabe\JumpingProfiles4\JPLogin.exe Goto ANTWORTENDE :ANTWORT-1 REM Aufruf von ifmember ist fehlgeschlagen da der Benutzer in zu vielen Gruppen ist REM im Zweifel neue Version starten damit Benutzer beim Update nicht übergangen wird \\server\freigabe\JumpingProfiles4\JPLogin.exe Goto ANTWORTENDE :ANTWORTENDE REM ab hier normal weiter oder Ende
Statt %ERRORLEVEL$ einzeln mit if abzufragen springen wir mit Goto direkt zum entsprechenden Abschnitt. Wichtig ist das jeder Abschnitt mit einem Sprung an das Ende, hier :ANTWORTENDE springt - sonst werden die Befehle darunter auch noch ausgeführt.
ismember.exe
Tja, ifmember.exe hat ja das Problem, das es bei sehr vielen Gruppenmitgliedschaften (>100) nicht mehr funktioniert. Garnicht so leicht eine, eine Alternative zu finden- aber hier ist sie:
Download ismember.exe: http://www.intelliadmin.com/IsMember.exe*
die Hauptseite dazu ist http://www.intelliadmin.com/index.php/downloads/ auf der es noch einige andere Tools gibt, kostenlose und kostenpflichtige.
Der Aufruf von ismember.exe ist genau der gleiche wie für ifmember.exe so das man es einfach ersetzten kann:
D:\>ismember.exe ************************************ * IsMember Command Line Utility * * Copyright 2010 IntelliAdmin, LLC * * http://www.intelliadmin.com * ************************************ Usage: IsMember.exe [Group] Note: IsMember.exe will return 0 if the user is not a member of the group IsMember.exe will return 1 if the user is a member of the group
Das Batchbeispiel von oben lässt sich also wie folgt verkürzen:
REM JumpingProfiles starten (ismember.exe Version) REM Neue Version 4.0 wenn Benutzer in der Gruppe JP_Migration ist REM ansonsten alte Version 2.19 wie gehabt REM 2010 von Bernhard Linz, Bernhard.Linz@datagroup.de \\server\freigabe\tools\ismember\ISMEMBER.EXE JP_Migration Goto ANTWORT%ERRORLEVEL% :ANTWORT0 REM Ist nicht Mitglied der Gruppe JP_Migration, also alte Version 2.19 starten \\server\freigabe\JP\JPLogin.exe Goto ANTWORTENDE :ANTWORT1 REM Ist Mitglied der Gruppe JP_Migration, also neue Version 4 starten \\server\freigabe\JumpingProfiles4\JPLogin.exe Goto ANTWORTENDE :ANTWORTENDE REM ab hier normal weiter oder Ende
ifmemberdeluxe.exe
Tja - wozu benutzen die meisten Administratoren ifmember.exe oder ismember.exe? Zum Laufwerke und Drucker mappen ...
ich habe das mal in ein Tool zusammengefasst - das Abfragen der Gruppenmitgliedschaft und das anschliessende mappen eines Netzlaufwerkes oder Druckers:
ifmemberDELUXE.exe -> eine alternative zu ifmember.exe und ismember.exe für das Verbinden von Netzlaufwerken und Druckern