Jump to content

~~~Dexter~~~

Newbie
  • Content Count

    15
  • Joined

  • Last visited

Community Reputation

10 Neutral

About ~~~Dexter~~~

  • Rank
    Newbie
  1. Wie nachlässig von mir. :( Vor die Eigenschaft sAMAccountName gehört natürlich ein Punkt.
  2. @dieschatten Suchst Du soetwas? Folgendes VB-Skript liest die Mitglieder einer Gruppe aus und speichert diese in die Textdatei UserList.txt. Den LDAP-Pfad solltest Du für Deine Umgebung anpassen. Const ForWriting = 2 Set BenutzerDatei = CreateObject("Scripting.FileSystemObject").CreateTextFile("UserList.txt", ForWriting, True) For Each str In GetObject("LDAP://CN=MeineGruppe,OU=MeineOU,DC=domaene,DC=local").Member Set Benutzer = GetObject("LDAP://" & str) With Benutzer BenutzerDatei.WriteLine .GivenName & " " & .SN & " " & sAMAccountName End With Next BenutzerDatei.Close
  3. @All Im einem Windows-Netzwerk ist folgendes Problem aufgetreten: Wenn ein Domänenbenutzer auf einem Rechner mit Windows XP SP 2 einen USB-Stick verwenden möchte, kommt die Meldung, dass man in der Administratorengruppe sein muss, um die neue Hardwarekomponente installieren zu können. Ich möchte jetzt nicht beigehen, und mich auf jeden Rechner mit admininstrative Rechte anmelden, damit der Stick installiert wird und als normaler Benutzer verwenden kann. Bei 1.000 Computern an 25 unterschiedlichen Standorten schier unmöglich. Außerdem möchte ich nicht über die Gruppenrichtlinien das Recht zur Geräteinstallation den Benutzern zuweisen. Es ist mit Sicherheit die schnellste, aber auch die unsicherste Lösung, Kann es auch darin liegen, wie so ein USB-Stick formatiert ist? (Dass der Stick als Festplatte und nicht als Wechselmedium erkannt wird?) Für Lösungvorschläge bin ich sehr dankbar. Danke voraus.
  4. @Deziph Kommentiere die Zeilen "On Error Resum Next" aus und lasse dann das Skript laufen. Jetzt müsste das Skript mit einer Fehlermeldung abbrechen. Diese bitte einmal posten.
  5. sPCName = UCase(Left(network.ComputerName, 3)) '<-Hier wandels Du die Zeichenfolge in Großbuchstaben um. Select Case sPCName 'Der Vergleich "TRE" mit "tre" liefert natürlich ein Unwahr. Deshalb auf die Schreibweise achten. Case "tre" PrinterShare = "\\dc\hp2300" network.AddWindowsPrinterConnection PrinterShare End Select
  6. @fjoerdman Hier hast Du: DruckerName = "\\Server\prt" Set WshNetzwerk = WScript.CreateObject("WScript.Network") Set Drucker = WshNetzwerk.EnumPrinterConnections Vorhanden = False For i = 0 To Drucker.Count - 1 Step 2 If LCase(Drucker.Item(i + 1)) = LCase(DruckerName) Then Vorhanden = True Exit For End If Next If Vorhanden = False Then WshNetzwerk.AddWindowsPrinterConnection DruckerName WshNetzwerk.SetDefaultPrinter(DruckerName) End If Oder das ganze mit WMI. DruckerName = "\\Server\prt" Set WMI = GetObject("winmgmts:") Vorhanden = False For Each Drucker In WMI.ExecQuery("SELECT * FROM Win32_Printer") If Drucker.DeviceID = DruckerName Then Vorhanden = True Exit For End If Next If Vorhanden = False Then WMI.Get("Win32_Printer").AddPrinterConnection(DruckerName) WMI.Get("Win32_Printer.DeviceID='" & DruckerName & "'").SetDefaultPrinter End If
  7. @red0 Hier benutze ich den WinNT-Provider, um die Mitglieder der Administratorengruppe auf dem Zielhost auszulesen. Option Explicit Dim Computerliste, Computer, Benutzer Computerliste = Array("PC01", "PC02", PC03) For Each Computer In Computerliste WScript.echo Computer For Each Benutzer In GetObject("WinNT://" & Computer & "/Administratoren").Members WScript.Echo vbTab & Benutzer.name Next WScript.Echo Next
  8. @Blade1981 Der Textinhalt ist in Unicode formatiert. Damit Du auch solche Dateien verabeitet kannst, ändere die Textzeile: DateiInhalt = FSO.OpenTextFile(Datei, LESEND).ReadAll in DateiInhalt = FSO.OpenTextFile(Datei, LESEND, False, TriStateTrue).ReadAll. Zusätzlich muss Du am Funktionsanfang die Konstante TriStateTrue = -1 definieren.
  9. @Blade1981 Mir fällt leider nicht ad hoc ein, wo ran es liegen kann. Ich habe das Skript nochmal ausgeführt, die veränderten Dateienn mitgelogt. Bei mir verändert das Skript ini- und reg-Dateien. Kann es vielleicht daran liegen, dass sich die Dateien in Verwendung befinden? Müsste ich nach dem Wochenende noch mal ausprobieren.
  10. @Blade1981 Ich habe es mal eben aus dem Ärmel geschüttelt. :D Die CreateShortcut(strPathname)-Methode des WshShell-Objekts erstellt eine neue Verknüpfung oder öffnet eine vorhandene Verknüpfung. Hier ist ein Beispiel Set WshShell = WScript.CreateObject("WScript.Shell") Desktop = WshShell.SpecialFolders("Desktop") Set Verknuepfung = WshShell.CreateShortcut(Desktop & "\Shortcut Script.lnk") With Verknuepfung .TargetPath = WScript.ScriptFullName .WindowStyle = 1 .Hotkey = "CTRL+SHIFT+F" .IconLocation = "notepad.exe, 0" .Description = "Shortcut Script" .WorkingDirectory = Desktop .Save End With
  11. Hallo Markus Hier hast Du: Option Explicit Const ssfDRIVES = 17 Dim Laufwerk '.. '... Dein Code '.. For Each Laufwerk In CreateObject("Shell.Application").Namespace(ssfDRIVES).Items Select Case Laufwerk.Path Case "H:\" Laufwerk.Name = "Homelaufwerk" Case "L:\" Laufwerk.Name = "Lager" End Select Next '.. '... Dein Code '..
  12. @Blade1981 Hier hast Du meinen Lösungsvorschlag zu Deinem Problem. Leider ist es in VBSkipt nicht möglich, einen Zeiger auf die Zeile, in die die Entsprechung gefunden wurde, zu bekommen. Deshalb muss die Datei neuerstellt werden. Option Explicit Function SuchenUndErsetzenInDatei(Verzeichnispfad, Suche, Ersetze) Const LESEND = 1 Const SCHREIBEND = 2 Dim FSO, Verzeichnis, Unterverzeichnis, Datei, DateiInhalt, Dateierweiterung, RegAusdruck Set FSO = CreateObject("Scripting.FileSystemObject") Set Verzeichnis = FSO.GetFolder(Verzeichnispfad) Set RegAusdruck = CreateObject("VBScript.RegExp") For Each Datei In Verzeichnis.Files Dateierweiterung = LCase(FSO.GetExtensionName(Datei)) If Dateierweiterung = "bat" Or Dateierweiterung = "ini" Or Dateierweiterung = "reg" Then With RegAusdruck .Pattern = Suche .IgnoreCase = True .Global = True 'On Error Resume Next DateiInhalt = FSO.OpenTextFile(Datei,LESEND).ReadAll If .Test(DateiInhalt) Then FSO.OpenTextFile(Datei, SCHREIBEND, True).Write .Replace(DateiInhalt, Ersetze) End If 'On Error Goto 0 End With End If Next For Each Unterverzeichnis In Verzeichnis.Subfolders SuchenUndErsetzenInDatei Unterverzeichnis, Suche, Ersetze Next End Function SuchenUndErsetzenInDatei "C:\Dokumente und Einstellungen\Administrator\", "hallo", "guten tag"
  13. @edocom ADO (ActiveX Data Objects) verwendet den ADSI OLE DB-Provider, um Informationen aus Active Directory zu lesen. Die Einträge des Ergebnissatzes wird dann in eine Excel-Arbeitsmappe gespeichert. Option Explicit Const SUCHFILTER = "(objectCategory=user)" Const ATTRIBUTE = "sAMAccountName, sn, givenName, telephoneNumber" Const SUCHBEREICH = "subtree" Dim Arbeitsmappe, DBVerbindung, DBAbfrage, Ergebnissatz, Excel, Spalte, Suchbasis Set DBVerbindung = CreateObject("ADODB.Connection") With DBVerbindung .Provider = "ADsDSOObject" ' .Properties("User ID") = "" ' .Properties("Password") = "" .Open "Active Directory Provider" End With Set DBAbfrage = CreateObject("ADODB.Command") DBAbfrage.ActiveConnection = DBVerbindung Suchbasis = "<LDAP://" & GetObject("LDAP://rootDSE").Get("defaultNamingContext") & ">" With DBAbfrage .CommandText = Suchbasis & ";" & SUCHFILTER & ";" & ATTRIBUTE & ";" & SUCHBEREICH .Properties("Page Size") = 1000 .Properties("Timeout") = 30 .Properties("Cache Results") = False End With Set Excel = CreateObject("Excel.Application") Excel.Visible = True Set Arbeitsmappe = Excel.Workbooks.Add() Excel.Cells(1, 1).Value = "Anmeldename" Excel.Cells(1, 2).Value = "Name" Excel.Cells(1, 3).Value = "Vorname" Excel.Cells(1, 4).Value = "Telefon-Nr" Set Ergebnissatz = DBAbfrage.Execute Ergebnissatz.MoveFirst Spalte = 1 While Not Ergebnissatz.EOF Spalte = Spalte + 1 Excel.Cells(Spalte, 1).Value = Ergebnissatz.Fields("sAMAccountName").Value Excel.Cells(Spalte, 2).Value = Ergebnissatz.Fields("sn").Value Excel.Cells(Spalte, 3).Value = Ergebnissatz.Fields("givenName").Value Excel.Cells(Spalte, 4).Value = Ergebnissatz.Fields("telephoneNumber").Value Ergebnissatz.MoveNext WEnd DBVerbindung.Close Arbeitsmappe.SaveAs("c:\Active Directory Info.xls") Excel.Quit
  14. @fjordman Wieso benutzt Du das Kommandozeilentool "net use" in Dein VB-Skript? Mit Hilfe der MapNetworkDrive-Methode kannst Du freigegebene Netzlaufwerke zum Computersystem hinzufügen. Syntax: object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword]) So trennst Du alle vorhandene Netzlaufwerke. Set objNetworkDrives = objNet.EnumNetworkDrives For i = 0 To objNetworkDrives.Count -1 Step 2 objNet.RemoveNetworkDrive objNetworkDrives.Item(i), True, True Next
  15. @All Folgendes Beispielskript kommt ohne temporäre Datei aus. :) Option Explicit Const SERVER = "www.google.de" Dim Erg Erg = WScript.CreateObject("WScript.Shell").Exec("ping -n 2 " & SERVER).StdOut.ReadAll WScript.Echo Erg
×
×
  • Create New...