Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBS Skript für Logon

Frage Microsoft Windows Server

Mitglied: free2k

free2k (Level 1) - Jetzt verbinden

23.11.2008, aktualisiert 25.11.2008, 5322 Aufrufe, 5 Kommentare

Ersteinmal wollte ich halle in diesem Board sagen

Jetzt zu meinem Problem. Ich versuche zur Zeit unsere Logon Skript von *.bat dateien zu einem VBS Skript zu migrieren. Und bin leider dabei auf ein Problem bestoßen.

Die Abfrage mit der ismember klappt leider nicht so.

Und zwar ist das Problem das in der Sicherheitsgruppe "GP_CEPT005" sind keine User sind sondern dort ist wiederum eine Sicherheitsgruppe. Und in der Sind dann die User der Abteilung.

Das kann ich auch leider nicht mehr trennen oder anderes gestalten.

Wenn ich in die Gruppe GP_CEPT005 einen Benutzer reinschreiben klappt das Skript. Gibt es dort einen Trick wie ich das auch noch hinbekomme? Da die ifmember.exe die ich bei der batch datei benutzt hab damit keine Probleme hatte.

Für Hinweise wäre ich dankbar Wer das ganze besser oder schlauer lösen kann soll mir bitte Tips geben.

Anbei der Abschnitt des VBS Skripts.

Grüße
Marcel


_____
Function IsMember(strGroup)
Dim objMember, objGroup
On Error Resume Next
Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
If Err.Number = 0 Then
IsMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUserName)
End If
On Error Goto 0
End Function


If IsMember("GP_CEPT005") Then
WSHNetwork.AddWindowsPrinterConnection "\\clprint01\cept005"
WSHNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\cept005"
end if
____
Mitglied: bastla
23.11.2008 um 11:27 Uhr
Hallo free2k!

Basierend auf diesem "Scripting Guy"-Artikel könnte das so gehen:
01.
Function IsMember(strGroup) 
02.
On Error Resume Next 
03.
InGroup = False 
04.
Set objUser=GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName) 
05.
Set colGroups = objUser.Groups 
06.
For Each objGroup in colGroups 
07.
    If objGroup.CN = strGroup Then 
08.
        InGroup = True 
09.
        Exit For 
10.
    Else 
11.
        GetNested objGroup, strGroup, InGroup 
12.
    End If 
13.
Next 
14.
IsMember = InGroup 
15.
End Function 
16.
 
17.
Sub GetNested(objGroup, strGroup, InGroup) 
18.
On Error Resume Next 
19.
colMembers = objGroup.GetEx("memberOf") 
20.
If Err.Number = 0 Then 
21.
    For Each strMember in colMembers 
22.
        strPath = "LDAP://" & strMember 
23.
        Set objNestedGroup = GetObject(strPath) 
24.
        If objNestedGroup.CN = strGroup Then 
25.
            InGroup = True 
26.
            Exit For		     
27.
        Else 
28.
            GetNested objNestedGroup, strGroup, InGroup 
29.
        End If 
30.
    Next 
31.
End If 
32.
End Sub
Noch als Anmerkung: Das Objekt für den (aktuellen) Benutzer ("objUser") wird innerhalb der Funktion erzeugt - besser wäre es, dieses beim Aufruf als Argument zu übergeben.

Grüße
bastla
Bitte warten ..
Mitglied: free2k
23.11.2008 um 16:07 Uhr
hm

Was meinst du damit dieses beim Aufruf als Argument zu übergeben ?

Bin leider des VBS nicht so mächtig... bin schonmal froh das ich soweit gekommen bin
Imo hackts aber irgendwie noch muss jetzt mal weitersuchen was bei mir nicht richtig stimmt.

Aber erstmal danke dafür.

Grüße
Marcel
Bitte warten ..
Mitglied: bastla
23.11.2008 um 18:46 Uhr
Hallo free2k!

Was meinst du damit dieses beim Aufruf als Argument zu übergeben ?
Die Funktion sollte die Gruppenzugehörigkeit eines beliebigen Users prüfen können - daher sollte der User nicht in der Funktion selbst festgelegt, sondern gemeinsam mit der Gruppe an die Funktion "übergeben" werden, etwa:
01.
If IsMember(strUser, "GP_CEPT005") Then
Das ist zwar für die Wiederverwendbarkeit der "Function" vorteilhaft, für die konkrete Anwendung hier aber nicht entscheidend ...
Wenn es Probleme gibt, solltest Du mit eingestreuten "WScript.Echo"-Zeilen und einem Test von der Kommandozeile mit
cscript //nologo Scriptdatei.vbs
die ermittelten Werte anzeigen lassen.

Du könntest etwa zwischen Zeile 6 und 7 einfügen:
01.
WScript.Echo "Direkt: ", objGroup.CN
und als Zeile 23b (= nach "Set objNestedGroup = GetObject(strPath)"):
01.
WScript.Echo "Indirekt: ", objNestedGroup.CN
So werden die gefundenen Gruppen mit dem Namen, wie sie dann auch verglichen werden, angezeigt.

Zu beachten wäre noch, dass in der derzeitigen Fassung die Groß-/Kleinschreibung berücksichtigt werden muss, also etwa "gp_CEPT005" nicht gefunden würde.

Grüße
bastla
Bitte warten ..
Mitglied: free2k
24.11.2008 um 22:39 Uhr
okay... fehler gefunden.... den mit dem ich getestet war natürlich in den falschen gruppen

Wie auch immer... jetzt haben sich neue Probleme gefunden

Wie kann ich den Internet Explorer starten und da eine Startzeit übergeben. Würde diese gerne aber so starten das sie minimale Leistung benötigt...evtl gibt es da ja einen Command.

Und ich hätte gerne noch gewusste ich wie Verzeichnisse übergeben kann weil hab hier ein Dos Skript

copy "\\Zeiterfassung - Aushilfen\%username%_zeiterfassung.xls.lnk" . /Y
cd %userprofile%\Desktop
%username%_zeiterfassung.xls.lnk

Also ich müsste wissen wie die Varibale für Desktop des Users und wie man einen Shortcut dafür dann macht....

Aber solangsam steige ich in vbs durch... dafür das ich bis vor 2 Tagen noch nie mit sowas zu tun habe gehts dann solangsam ;)


Und ich habe eine test.help datei die immer in Alluser/Desktop abgelegt werden soll..... gibt es einen Befehlt was überprüft ob die Datei in der Quelle neuer ist als die auf dem Desktop? wenn ja soll diese ersetzt werden.

Weil ich will das Skript soweit Optimieren wie es nur geht damit keine unnötige Wartezeit damit entsteht... womit wir imo unserer Probleme haben wegen der 10000x ifmember.exe abfrage unter dos


Grüße
Marcel
Bitte warten ..
Mitglied: bastla
25.11.2008 um 00:17 Uhr
Hallo free2k!

Auch wenn's noch unter den (sehr allgemein gehaltenen) Threadtitel passen würde, wäre das "Starten des Internet Explorers mit einer zu übergebenden Startzeit" ein Fall für einen neuen Beitrag - dort könntest Du dann auch etwas ausführlicher erklären, was eigentlich damit gemeint ist ...
Also ich müsste wissen wie die Varibale für Desktop des Users und wie man einen Shortcut dafür dann macht....
Den Pfad zum Desktop erhältst Du so (Zeile 1 brauchst Du nur, wenn das "Shell"-Objekt nicht schon an anderer Stelle erzeugt wurde):
01.
Set WshShell = WScript.CreateObject("WScript.Shell") 
02.
strDesktop = WshShell.SpecialFolders("Desktop")
Das Erstellen eines Shortcuts (in Deinem Batch wird ein solcher kopiert und nicht erstellt) wurde hier im Forum schon öfter abgehandelt.
gibt es einen Befehlt was überprüft ob die Datei in der Quelle neuer ist als die auf dem Desktop?
Für den Pfad zum "AllUsersDesktop" gibt es ebenfalls einen gleichnamigen "SpecialFolder" (siehe oben).

Um das Änderungsdatum einer Datei auszulesen, benötigst Du zunächst ein "FileSystemObject" (auch hier gilt: wenn ein solches bereits vorher erzeugt wurde, einfach dieses verwenden), dann ein "File"-Objekt und schließlich dessen "DateLastModified"-Eigenschaft - diese kannst Du dann mit dem auf dem selben Weg ermittelten "DateLastModified" der zu kopierenden Datei vergleichen.
01.
Set WshShell = WScript.CreateObject("WScript.Shell") 
02.
strAllUsersDesktop = WshShell.SpecialFolders("AllUsersDesktop") 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set f = fso.GetFile(strAllUsersDesktop & "\test.help") 
05.
dtHelpFile = f.DateLastModified 
06.
WScript.Echo "Änderungsdatum der vorhandenen ""test.help"": " & dtHelpFile
(Die letzte Zeile dient natürlich nur als Demo / zum Testen.)

Dass Du für das Schreiben unter "All Users" Admin- oder Systemrechte benötigst, setze ich als bekannt voraus (insofern wäre dieser Teil des Scripts eher als "StartUp"-Script und nicht als "Logon"-Script zu verwenden).

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
Powershell CHAT Skript (5)

Frage von xpxy15 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...