Aktionen

Windows:ifmember+ismember

Aus znilwiki

Version vom 26. Mai 2012, 21:53 Uhr von BLinz (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Ifmemberdeluxe logo.png
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:

Datei:Ifmember sample.cmd

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 logo.png
ifmemberDELUXE.exe -> eine alternative zu ifmember.exe und ismember.exe für das Verbinden von Netzlaufwerken und Druckern


Loading comments...