This page has been robot translated, sorry for typos if any. Original content here.

Scripts für Systemadministratoren, nützliche Skripte für Win2003



  • Um das Netzlaufwerk zu verbinden
  • So schließen Sie den Drucker
  • Überprüfen Parameteränderungen in AD und eine E-Mail oder in einer Sharepoint - Liste zu senden
  • Script , um die Terminal - Lizenzen an Clients zu entfernen , alle 30 Tage
  • Script zur Bekämpfung von mail.ru-agent
  • Das Scripting macht das Backup - System und gießt es auf dem ftp
  • Schlösser / entriegelt in AD - Benutzer, bestimmte Dateiliste unter ihrem Namen
  • Kopieren Sie die Datei an den Benutzer Roaming - Profile
  • Das Skript sucht all Controller - Benutzer , die nicht anmelden ist bereits mehr als 90 Tage und ihre dizeyblit
  • Batch - Datei (closefl.bat) schließt alle Dateien , die von Benutzern im Netzwerk auf Ihrem Computer geöffnet
  • Das Skript für die Benachrichtigung des Benutzers über das Erlöschen der uchetki Domain für 10 Tage
  • Script des Benutzerverzeichnis mit begrenzten Gültigkeitsdauer suchen uchotki und Export in eine Datei
  • Script yaky perevіryaeє yuzerіv novih i vіdsilaє IM Liste der Text vkazanim
  • Stellen Sie oder deaktivieren Sie das Kontrollkästchen „Allow Remote - Zugriff auf diesen Computer“
  • Disabled - Enabled Adapter
  • Iventarizatsiya alle Maschinen in der Domäne
  • Bestimmen , wann ein Konto läuft ab (Gibt das Ablaufdatum für ein Benutzerkonto)
  • Ermitteln Wenn ein Benutzerkonto Verfällt
  • „Benutzer - Passwort bei der nächsten Anmeldung ändern musssetzt rekursiv das gesamte Domain - Attribut
  • Zubereitung SID (a) des AD - Computer
  • Suche in ActiveDirectory- Konten mit abgelaufenen Passwörtern
  • Umfragen Computer , für den Anwender ist zur Zeit angemeldet
  • Überwacht Systemprotokoll und benachrichtigt die Änderung Browser - Einstellungen
  • Script starten Sie den ADSL Moped D-Link DSL-2640U
  • uchetok Skript Benutzer aus der Liste zu erstellen. (Txt, XLS)
  • Starten Sie Apache Dienste, mysql, cron, sendmail


  • Otkryvaesh Notebook, Sie den Code kopieren und Dokument mit der Erweiterung .vbs sohranyaesh. Als nächstes, wenn Sie ohne Domain Netzwerk kopieren, die ich habe in jedem PC-Start gefunden. Wenn das Netzwerk eine Domäne ist, dann ein Gruppenrichtlinien sozdaesh (in AD), wobei die Parameter dieser Datei startup vstavlyaesh. Als nächstes wird das Skript durch Verbinden oder neu gebootet Konto ausgeführt






    Um das Netzlaufwerk zu verbinden:
     Set WshNetwork = Create ( „WScript.Network“) ‚Erstellen der Objekttyp-Netzwerk-Set-Laufwerke = WshNetwork.EnumNetworkDrives c = 0‘ wird die Variable für mindestens ein Netzlaufwerk überprüft!  i = 0 Während i <= Drives.Count-1 'prüfen Netzwerk Dikov c = 1' MsgBox "Haben Sie ein Netzlaufwerk" & Drives.Item (i) & "-" & Drives.Item (i + 1) i = i + 2 Wend, wenn c = 0 ist, dann 'MsgBox "Es gibt keine Scheibe befestigt"' MsgBox "ein Versuch, ein Netzwerklaufwerk zu verbinden" ‚Set WshNetwork = Create ( "WScript.Network") WshNetwork.MapNetworkDrive "Z",„\ \ Server \ Ordnername „End if 





    So schließen Sie den Drucker:
     Set WshNetwork = WScript.CreateObject ( "WScript.Network")
     WshNetwork.AddWindowsPrinterConnection "\\ imyaprintservera \ Druckername"
    
    





    Überprüfen Parameteränderungen in AD und sendet Benachrichtigung per E-Mail oder in einer Sharepoint - Liste:


    / * ================================================ ========
    '
    ‚Script Informationen: Senden von Nachrichten an den Administrator
    ‚Wenn Sie die Daten in AD ändern kann Nachrichten senden
    ‚Per E-Mail oder eine Aufgabe in MOSS 2007 erstellen
    '
    ‚Autor: Korotenko Vladimir SDC 2008 Voronezh
    ‚Ursprünglich erstellt: 15.04.2008 - 11.01.47
    ‚Original Pfad: untitled.vbs
    ‚Beschreibung: Erstellen Sie Dump-Domäne und die Vergleichsschaltung
    ‚Von einer früheren Kopie für den Wandel und die anschließenden
    ‚Benachrichtigung
    '
    ‚================================================= =======
    * /




    // Skripteinstellungen Abschnitt
    var SMTPHost, SMTPPort, Mailsubject, MailTo, Mailfrom, Textbody;
    var DumpCmdLine, WinDiff, DumpFile, DumpFileOld, WorkingFolder;
    var DiffFile, DiffMessage;
    var SpListGuid, SpHost, UseSp;

    SMTPHost = "COMP1"; // E-Mail-Server-Nachrichten senden
    SMTPPort = 25; // mail-Server-Port
    Mailsubject = „Änderungen an den Organisationsplan“; // Header-Mail-Nachricht
    MailTo = "vkoroten@ot.comch.ru"; // Adresse des Empfängers
    Mailfrom = "vkoroten@ot.comch.ru"; // die Absenderadresse
    DumpCmdLine = "C: \\ Windows \\ System32 \\ ldifde.exe"; // Befehlszeile ihre Daten AD-Dump
    WinDiff = "c: \\ Temp \\ Windiff.exe"; // Programm zum Vergleich 2
    DumpFile = "schema.ldf"; // Name 1-Datei zu speichern
    DumpFileOld = "schemaOld.ldf"; // Name 2-Dateien zum Vergleich
    WorkingFolder = "c: \\ Temp \\"; // Arbeitsordner für temporäre Dateien

    DiffFile = "diff.log"; // Aufruf Datei Ergebnisse vergleichen
    DiffMessage = "1 aufgeführten Dateien"; // Zeile, die wir bei einer Temperatur von lichii Dateien suchen

    SpListGuid = "{3D9B5EFB-C0C5-434C-B1DA-61FEA6E9D63B}";
    SpHost = "http: // portal4";
    UseSp = true; // Nachrichten an die Liste von Share Point senden

    // Ende des Einstellabschnitt

    / ************************************************* ********************
    Die Codeänderung nur im Fall von einem tiefen Verständnis von dem, was zu tun
    und was am wichtigsten ist, wie !!!!!!!!! zu tun
    ************************************************** ******************** /

    var Datei, wsh;
    // erstellen ein Objekt für

    file = WScript.CreateObject ( "Scripting.FileSystemObject");

    if (file.FileExists (WorkingFolder + DumpFileOld))
    file.DeleteFile (WorkingFolder DumpFileOld +);

    if (file.FileExists (WorkingFolder + DumpFile))
    file.MoveFile (WorkingFolder + DumpFile, WorkingFolder + DumpFileOld)

    WSH = WScript.CreateObject ( "WScript.Shell");

    wsh.Run (DumpCmdLine + "f" + + WorkingFolder DumpFile, 1,1);
    TrimUnused (WorkingFolder DumpFile +);

    if (file.FileExists (WorkingFolder + DumpFileOld))
    CheckChanges (WorkingFolder + DumpFile, WorkingFolder DumpFileOld +);




    // Überprüfen Sie den Unterschied in der 2-Dateien
    Funktion CheckChanges (pathFrom, pathto)
    {
    var cmd;
    // Windiff.exe output.ldf schemaOld.ldf -Sx logcmd
    cmd = WinDiff + "" + pathFrom + "" + pathto + "-Sx" + + WorkingFolder DiffFile;
    wsh.Run (cmd, 1,1);
    objFile = file.OpenTextFile (WorkingFolder DiffFile +, 1);
    var Buff = new String ();
    Buff = objFile.ReadAll ();
    objFile.Close ();
    var arr = new Array ();
    arr = buff.split ( "\ r \ n");

    for (var i = 0; i <arr.length; i ++)
    {
    // Prüfen, ob die Dateien unterschiedlich sind, so dass, wenn Sie eine Nachricht senden

    if (arr [i] .indexOf (DiffMessage)> - 1)
    {
    var d = new Date ();
    Textbody = "Erkannte Änderungen in Schema Vergleich Zeit." + D.toString ();
    Sendmessage ();
    }
    }
    }



    // die Zeichenfolge aus den sich häufig ändernden Attribute entfernen
    Funktion TrimUnused (name)
    {
    var ForReading = 1;
    var ForWriting = 2;
    var objFSO, objFile;


    objFSO = new ActiveXObject ( "Scripting.FileSystemObject");
    objFile = objFSO.OpenTextFile (Name, ForReading);
    var strContents = new String ();
    strContents = objFile.ReadAll ();
    objFile.Close ();

    var arr = new Array ();
    arr = strContents.split ( "\ r \ n");

    objFile = objFSO.OpenTextFile (Name, ForWriting);

    for (var i = 0; i <arr.length; i ++)
    {
    if (arr [i] .indexOf ( "lastlogon") == -1) {
    objFile.WriteLine (arr [i]);
    }
    }
    objFile.Close ();
    }



    // E-Mail an alle Parameter senden im Abschnitt globale Variablen angegeben werden müssen

    Funktion Sendmessage () {

    if (UseSp)
    {
    NewMessage (SpListGuid, SpHost, Textbody);
    Rückkehr;
    }
    var objEmail = new ActiveXObject ( "CDO.Message");
    objEmail.From = Mailfrom;
    objEmail.To = MailTo;

    objEmail.Subject = Mailsubject;
    objEmail.Textbody = Textbody;
    objEmail.MimeFormatted = true;
    objEmail.BodyPart.Charset = "windows-1251";
    objEmail.Configuration.Fields.Item ( "http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;
    objEmail.Configuration.Fields.Item ( "http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPHost;
    objEmail.Configuration.Fields.Item ( "http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort;
    objEmail.Configuration.Fields.Update ();
    objEmail.Send ();

    }

    // eine neue Nachricht in einer Sharepoint-Liste erstellen
    Funktion NewMessage (Liste, hostname, message)
    {
    var Web, erf, Charge;
    web = new ActiveXObject ( "MSXML2.XMLHTTP.3.0");

    Batch = "<Batch ListVersion = '0'> <Methode ID = '1' Cmd = 'Neu'> <Feldname = 'Titel'>" + + message "</ Field> </ Method> </ Batch>" ;

    var req = „<? xml version = '1.0' encoding = 'utf-8' ??> <soap: Envelope xmlns: xsi = 'http: //www.w3.org/2001/XMLSchema-instance' xmlns: xsd = 'http://www.w3.org/2001/XMLSchema' xmlns: soap = 'http: //schemas.xmlsoap.org/soap/envelope /> <soap: Body> <Updatelist xmlns = ‚http: // schemas.microsoft.com/sharepoint/soap /> „;
    erf + = "<Listenname>" + Liste + "</ Listenname>";
    erf + = "<Updates>" + Batch + "</ Aktuelles> </ Updatelist> </ soap: Body> </ soap: Envelope>";


    var r = hostname + "/_vti_bin/Lists.asmx?op=UpdateListItems";
    web.Open ( "POST", r, False);
    web.setRequestHeader ( "Content-Type", "text / xml; charset = utf-8");
    web.setRequestHeader ( "Soapaction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
    web.send (req);

    //'WScript.Echo erf
    //'WScript.Echo Chr (13) & Chr (10)
    //'WScript.Echo web.responseText

    }





    Script , um die Lizenz von Terminals auf den Clients zu entfernen , alle 30 Tage:

    ‚Entfernt ggf. Registrierungsschlüssel, die temporäre Lizenz speichert, wenn es 30 Tage gewesen.
    Option Explicit
    Dim iCount, DDAT, dReadDat, strPath, strRegKey ‚Deklaration von Variablen
    Dim fso, fLogFile, wshSysEnv, WshShell ‚klassifizierten Anlagen

    DDAT = date ‚das aktuelle Datum erhalten
    err.clear ‚yf jeden Fall sauber Stack-Fehler

    On Error Resume Next ‚wird nach dieser Fehlermeldung nicht angezeigt

    ‚Erstellen Objekt Shell
    Set WshShell = WScript.CreateObject ( "WScript.Shell")
    ‚Erstellen Objektumgebung, die die erforderliche Systemvariable enthält
    Set wshSysEnv = WshShell.Environment ( "PROCESS")
    ‚Zieht Systemvariable (vindovskoy Pfad zu dem Ordner) und steckt es in einem String-Variable für die spätere Verwendung
    strPath = wshSysEnv ( "WINDIR")

    ‚Erstellen Sie ein Objekt Dateisystemzugriff und Objektzugriff auf die gewünschte Datei zu lesen
    Set fso = Create ( "Scripting.FileSystemObject")
    set = fLogFile fso.OpenTextFile (strPath & "\ LiDelDat.alx", 1, false)

    „Die wichtigste Voraussetzung für die Löschung oder nicht entfernt Registrierungszweig
    Wenn err.number <> 0 dann
    ‚Durchführung der Entfernung Registry-Zweig Verfahren
    rufen DelLicense

    ‚Die Eingabe der letzten Tag der Entfernung der Lizenz in die Protokolldatei, in den vorhandenen Eintrag überschreiben
    rufen WriteToLog
    sonst
    ‚Ich las aus der Datei und vergleichen Sie das Datum der letzten Entnahme einer Lizenz mit dem aktuellen Datum
    dReadDat = CDate (fLogFile.ReadLine ())

    ‚Es muss sein (DDAT - dReadDat)
    Wenn (DDAT - dReadDat)> 29 dann
    ‚Durchführung der Entfernung Registry-Zweig Verfahren
    rufen DelLicense

    ‚Die Eingabe der letzten Tag der Entfernung der Lizenz in die Protokolldatei, in den vorhandenen Eintrag überschreiben
    rufen WriteToLog
    End If
    End If

    ‚Zerstören Sie alle unnötigen Gegenstände mehr
    Set WshShell = Nothing
    Set wshSysEnv = Nothing
    Set fso = Nothing

    ‚************************************************* ***********
    ‚Verfahren
    ‚************************************************* ***********
    ‚Das Verfahren für die Lizenz zu entfernen
    Sub DelLicense ()
    ‚Entfernen Sie die Plug-Lizenz für einen
    On Error Resume Next
    err.clear

    für iCount = 0 bis 9
    strRegKey = "HKLM \ SOFTWARE \ Microsoft \ MSLicensing \ Store \ License00" & iCount & "\"
    WshShell.RegDelete (strRegKey)

    Wenn err.number <> 0 dann
    err.clear
    End If
    nächste

    ‚Löschen Steckerhauptabschnitt
    WshShell.RegDelete ( "HKLM \ SOFTWARE \ Microsoft \ MSLicensing \ Store \")
    wenn err.number <> 0 dann Err.Clear

    WshShell.RegDelete ( "HKLM \ SOFTWARE \ Microsoft \ MSLicensing \ HardwareID \")
    wenn err.number <> 0 dann Err.Clear

    ‚Löschen Sie die primäre Partition
    WshShell.RegDelete ( "HKLM \ SOFTWARE \ Microsoft \ MSLicensing \")
    wenn err.number <> 0 dann Err.Clear

    End Sub

    ‚Das Verfahren zur Aufzeichnung des Datums der letzten Entnahme der Lizenzdatei
    Sub WriteToLog ()
    err.clear

    ‚Neues Objekt Zugriff auf die gewünschte Datei auf dem Aufzeichnungs und überschreiben vorherige Einträge
    set = fLogFile fso.OpenTextFile (strPath & "\ LiDelDat.alx", 2, true)

    ‚Schreiben Sie an die Datei Reinigung der Registry-Datum
    fLogFile.Write (Datum)

    set fLogFile = nichts ‚zerstören das Objekt
    End Sub





    Script mail.ru-Mittel zur Bekämpfung von :

    Konst DeleteReadOnly = TRUE

    Set WshShell = WScript.CreateObject ( "Wscript.Shell")
    Set WshSysEnv = WshShell.Environment ( "Prozess")

    Set objFSO = Create ( "Scripting.FileSystemObject")
    agentFile = WshSysEnv ( "Userprofile") + "\ Anwendungsdaten \ Mail.Ru \ Agent \ magent.exe"


    Wenn objFSO.FileExists (agentFile) Then

    objFSO.DeleteFile (agentFile), DeleteReadOnly


    wenn err.number = 0 then
    Set objEmail = Create ( "CDO.Message")

    objEmail.From = "killer@kontora.ru"
    objEmail.To = "admin@kontora.ru"
    objEmail.Subject = "Mail.ru-agent"
    objEmail.Textbody = „Sehr geehrter Herr, Systemadministratoren, die Sie darüber informiert, dass der Feind, der mail.ru Mittel zerstört“ + WshSysEnv ( „Userprofile“)
    objEmail.Configuration.Fields.Item _
    ( "Http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objEmail.Configuration.Fields.Item _
    ( "Http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "Ip-Mail-Server"
    objEmail.Configuration.Fields.Item _
    ( "Http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objEmail.Configuration.Fields.Update
    objEmail.Send

    end if

    end if





    Das Scripting macht das Backup - System und füllt es mit dem ftp:

    strComputer = ""
    Set WshShell = WScript.CreateObject ( "WScript.Shell")
    strCommand = „C: \ WINDOWS \ system32 \ ntbackup.exe Backup @C: \ cmd \ Back-up-Drive-C.bks / a / v: Nein / r: Nein / rs: nein / hc: off / m Normal / j Back-up-Drive-C / l: s / f D: \ Back-Up \ Backup-drive-c.bkf "
    WshShell.Run strCommand, 1, true

    Set objWMIService = GetObject ( "winmgmts: \\" & strComputer & "\ root \ cimv2")
    Set colItems = objWMIService.ExecQuery ( "von Win32_LocalTime * Wählen Sie")

    For Each objItem in colItems
    strCommand = "C: \ Arch \ 7z.exe ein D: \ Back-Up \ Backup-dc-SRV-01-DayOf-Woche -" & objItem.DayOfWeek & „7z D: \ Back-Up \ * BKF -t7z .. -M0 = BCJ2 -M1 = LZMA: d23 = -M2 LZMA: d19 = -M3 LZMA: d10M -mb0: 1 -mb0s1: 2 -mb0s2 3 "
    nächste
    WshShell.Run strCommand, 1, true
    strCommand = "ftp es: C: \ CMD \ CTP-command.txt"
    WshShell.Run strCommand, 1, true





    Die Script - Schlösser / entriegelt die AD Menschen, so dass sie von einem bestimmten Dateinamensliste nehmen, und benachrichtigt den Administrator per E-Mail über die Ergebnisse:

    Dim Mlogins (9000), MAdspath (9000), MFullName (9000)
    Dim objFileSystem, objInputFileFromKardy, strData
    Set objFSO = Create ( "Scripting.FileSystemObject")
    Const OPEN_FILE_FOR_READING = 1

    ‚Geben Sie die Domäne
    Konst strDomainName = "<domain name zB domain.com>"
    ‚Geben Sie die OU in AD, in dem wir suchen
    Konst strStartOU = „Domänen-Benutzer“
    strDomainDN = "DC =" & Ersetzen (strDomainName " "" DC =")

    ‚Daten empfangen --------------------- --------------------
    Set objConnection = Create ( "ADODB.Connection")
    objConnection.Open "Provider = ADsDSOObject;"
    Set ObjCommand = Create ( "ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "<LDAP: // OU =" & strStartOU & "" & strDomainDN & ">; (& (objectclass = person) (objectclass = user)); ADsPath; subtree"
    objCommand.Properties ( "Page Size") = 4000

    Set objRecordSet = objCommand.Execute


    ‚Indexing -------- ------
    index = 0
    Während Nicht objRecordset.EOF
    strADsPath = objRecordset.Fields ( "ADsPath")
    Set objUser = GetObject (strADsPath)
    MFullName (Index) = objUser.DisplayName & ""
    Mlogins (Index) = objUser.sAMAccountName
    MAdspath (Index) = strADsPath
    index = index + 1
    objRecordSet.MoveNext

    Wend
    objConnection.Close

    index = index-1
    MaxIndex = index

    ‚Pfad zur Datei mit den Listennamen Personen, deren Konten benötigen zum Öffnen / Schließen
    strFileOfFiried = "d: \ file_of_firied.txt"

    Set objFileSystem = Create ( "Scripting.FileSystemObject")
    Set objInputFileFromKardy = objFileSystem.OpenTextFile (strFileOfFiried, OPEN_FILE_FOR_READING)
    ‚Auspuffe Inhalt der Datei in ein Array
    inputDataFromFiried = Split (objInputFileFromKardy.ReadAll, vbNewLine)
    ‚Anschießen Ergebnislisten
    UserDisables = ""
    UserUpdated = ""
    UserNoFound = ""
    UserDuplicated = ""
    ii = 0


    Für jede strFULL In inputDataFromFiried
    wenn Len (strFULL)> 5 dann
    ‚Ich fand die Zähler entspricht out auf Null
    e = 0
    ‚1. Feld: Wählen Sie aus der Leitung Benutzername
    strFIO = Left (strFULL, InStr (strFULL, ";") - 1)
    ‚Divide by Teile Namen
    Familia = Left (strFIO, (Instr (strFIO, "") -1))
    N = Trim (mid (strFIO, Instr (strFIO, "")))
    Imya = Left (N, (Instr (N, "") -1))
    Otchestvo = Trim (mid (N, Instr (N, "")))
    ‚Putting von Teilen Namen
    strFIO = Familia & "" & imya & "" & Otchestvo

    index = MaxIndex
    Während Index> 1

    ‚Teile durch Teile Namen in AD

    AdFamilia = ""
    AdImya = ""
    AdOtchestvo = ""
    AdFamilia = Left (MFullName (Index), (Instr (MFullName (Index), "") -1))
    wenn Len (Trim (mid (MFullName (Index), Instr (MFullName (Index), ""))))> 1, dann
    AdN = Trim (mid (MFullName (Index), Instr (MFullName (Index), "")))
    wenn Len (Left (AdN, (Instr (AdN, ""))))> 1 then
    AdImya = Left (AdN, (Instr (AdN, "") -1))
    wenn Len (Trim (mid (AdN, Instr (AdN, ""))))> 1, dann
    AdOtchestvo = Trim (mid (AdN, Instr (AdN, "")))
    end if
    end if

    end if


    ‚Putting von Teilen Namen
    AdstrFIO = AdFamilia & "" & AdImya & "" & AdOtchestvo
    AdstrFIO1 = AdImya & "" & AdOtchestvo & "" & AdFamilia
    AdstrFIO2 = AdImya & "" & AdFamilia & "" & AdOtchestvo
    ‚Wscript.Echo AdstrFIO

    if (StrFIO = AdstrFIO) oder (StrFIO = AdstrFIO1) oder (StrFIO = AdstrFIO2), dann
    e = e + 1
    Mindex = index
    end if
    index = index-1
    Wend


    wenn e = 1 ist, dann
    ‚Login Aussetzung in AD
    LockUser (Mlogins (Mindex))
    UserDisables = UserDisables & "Benutzer:" & strFIO & "deaktiviert" & vbCrLf
    end if
    ‚Haben die Öffnung nicht blockiert / da wir haben einige mit dem gleichen Namen gefunden
    wenn e> 1, dann
    UserNoFound = UserNoFound & "Benutzer:" & strFIO & & vbCrLf "mehr als 1 mal gefunden wird"
    end if
    ‚Haben die Öffnung nicht blockiert / da Benutzer nicht gefunden
    wenn e = 0, dann
    UserDuplicated = UserDuplicated & "Benutzer:" & strFIO & "nicht gefunden wird" & vbCrLf
    end if

    end if


    nächste






    ‚Wenn es irgendein Ergebnis, dann
    if (len (UserDisables) + len (UserNoFound) + len (UserDuplicated)> 10), dann
    ‚Begin E-Mail senden

    Set objNetwork = Create ( "Wscript.Network")
    objComputerName = objNetwork.ComputerName
    objUserName = objNetwork.UserName
    Set objMessage = Create ( "CDO.Message")
    objMessage.From = "<E-Mail von jemandem geschickt mail>"
    objMessage.To = "<E-Mail jemand gesendete E-Mail>"
    objMessage.Subject = "Betreff"

    ‚Setzen Sie kodirovochku
    objMessage.bodypart.charset = "koi8-r"
    objMessage.TextBody = UserDisables & vbCrLf & UserNoFound & vbCrLf & UserDuplicated
    objMessage.Configuration.Fields.Item _
    ( "Http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    ‚Name oder die IP-Remote SMTP Server
    objMessage.Configuration.Fields.Item _
    ( "Http://schemas.microsoft.com/cdo/configuration/smtpserver") = "<SMTP-Server-Adresse>"
    ‚Server-Port (typischerweise 25)
    objMessage.Configuration.Fields.Item _
    ( "Http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objMessage.Configuration.Fields.Update
    ‚== End Remote-SMTP-Server-Konfiguration Abschnitt ==

    objMessage.Send


    end if



    objInputFileFromKardy.Close
    Set objFileSystem = Nothing
    Sub LockUser (strText)
    ‚In dieser Zeile Wert TRUE - Benutzer diseyblit, FALSCH - öffnet den Benutzer
    strDisableAccount = TRUE

    strUserLogin = strText
    set objUser = GetObject ( "WinNT: // <domain> /" & strUserLogin & "user")


    wenn strDisableAccount = TRUE dann
    objUser.AccountDisabled = strDisableAccount
    objUser.Description = "Konto ist wegen des Brennens Disabled" & "in" & "" & Date ()
    objUser.SetInfo
    end if

    wenn strDisableAccount = FALSE dann
    objUser.AccountDisabled = strDisableAccount
    objUser.Description = & "in" & "" & Date () "Konto wird von Skript Eröffnet"
    objUser.SetInfo
    end if


    End Sub





    Dieses Skript wird verwendet , um die Datei an den Benutzer Roaming - Profile zu kopieren:

    // ************************************************ *****************************
    // JScript 2004 Shs
    // Dieses Skript wird verwendet, um die Datei an den Benutzer Roaming-Profile zu kopieren
    // (Add-Tag im Benutzermenü)
    // ************************************************ ******************************
    //
    //
    // ************************************************ *****************************
    // rekursive Funktion verschieben Sie alle Unterverzeichnisse mit dem Job beginnen (PolFldr)
    // und kopieren Sie eine bestimmte Datei (Script) auf dem Ordner Aufgaben (FldrName)
    // ************************************************ ******************************
    Funktion LoopSubFolders (PolFldr, DeepCount)
    {
    var SubFolders, // Sammlung podkatologov Systemrichtlinien
    fsoPolFldr, // Objekt auf den Ordner zuzugreifen
    CurFldr; // aktuelle Ordner

    DeepCount ++;
    //WScript.Echo(DeepCount);
    if (DeepCount <DeepLimit)
    {
    fsoPolFldr = FSO.GetFolder (PolFldr);
    // die Sammlung von Unterverzeichnissen Systemrichtlinien Get
    SubFolders = new Enumerator (fsoPolFldr.SubFolders);
    //
    für (;! SubFolders.atEnd (); SubFolders.moveNext ())
    {
    CurFldr = SubFolders.item ();
    if (CurFldr.Name == FldrName)
    {
    try {
    WScript.Echo (CurFldr.Path + "\\" + Scriptname);
    //WScript.Echo(Path2Scripts + "\\" + Scriptname);
    FSO.CopyFile (Path2Scripts + "\\" + Script, CurFldr.Path + "\\" + Script, true)
    }
    catch (e)
    {// Prozessfehler
    var Msg;
    if (! e = 0) Msg = "Fehler -" + e.description
    sonst Msg = "Ok";
    WScript.Echo (Msg);
    }
    }
    // rekursiven Aufruf
    LoopSubFolders (CurFldr, DeepCount);
    } // Ende für
    } // end if
    }
    // ************************************************ ********************************

    //
    //


    // ************************************************ ********************************

    // Cap
    // ************************************************ ********************************

    // Code geht hier von den Befehlszeilenoptionen bekommen
    // 1) der Name der Datei rassprostranyaemogo
    // 2) der Verzeichnisname in jedem Profil, das verteilte Datei kopiert werden
    // ************************************************ ********************************

    var Script = „Aktualisieren des Betriebs menyu.lnk“
    FldrName = "Hauptmenü"; // Der Name der Unterordner in dem Profil (es wird die Verknüpfung-Datei kopieren)
    // ************************************************ ********************************
    **




    // ************************************************ ********************************
    *
    Deklarieren Sie die globalen Variablen //
    // ************************************************ ********************************
    *
    var BFS, // Objekt Filesystem
    Path2Scripts, // zu rasprostronyaetsya Dateipfad (die Dateien unter der Annahme, werden im selben Ordner wie die Datei gespeichert)
    DeepCount, // Zähler Rekursionstiefe
    DeepLimit, // Grenzwert Rekursionstiefe
    POLF; // Wurzel, aus der der Suche zu starten und die Verteilung der zugrunde liegenden Dateiordner
    // ************************************************ ********************************
    *
    POLF = "\\\\ DC \\ UserFolders \\ OZI"; ////
    // ein Objekt Filesystem erstellen;
    FSO = WScript.CreateObject ( "Scripting.FileSystemObject");
    DeepCount = 0;
    Path2Scripts = FSO.GetParentFolderName (FSO.GetFile (WScript.ScriptFullName));
    Begrenzen der Tiefe der rekursiven Aufrufe //
    DeepLimit = 4;
    LoopSubFolders (POLF, DeepCount);





    Iventarizatsiya alle Maschinen in der Domäne:

    dim strClass, objAD, OBJ
    dim invdate
    dim constmb, constgb, sizegb
    dim compname, temp, Compad
    constmb = 1048576
    constgb = 1073741824
    strClass = array ( "Win32_ComputerSystem", "Win32_BIOS", "Win32_Processor", _
    "Win32_DiskDrive", "Win32_VideoController", "Win32_NetworkAdapter", _
    "Win32_sounddevice", "win32_SCSIController", "Win32_Printer")

    set objAD = GetObject ( "LDAP: // CN = Computers, DC = aaa, DC = bbb, DC = ccc")
    objAD.filter = array ( "Computer")
    On Error Resume Next
    für jeden obj in objAD
    Compad = rechts (obj.name, len (obj.name) -3)
    invdate = date
    temp = "<html>" + chr (10) + "Sammlung Date:" & invdate & "<table>" + chr (10)
    compname = ""
    ‚On Error Resume Next
    gesetzt objWMIService = GetObject ( "winmgmts: //" & Compad & "/ root \ cimv2")
    i = 0
    s = 0
    d = 0
    q = 0
    ‚Sizegb = ""
    für a = 0 bis 8
    Set colItems = objwmiservice.instancesof (strClass (a))
    für jede objitem in colItems
    Wählen Fall eines
    Fall 0
    temp = Temp + "<tr> <td>"
    temp = Temp + "Computername" + "</ td> <td>" + objitem.name + "</ td>" + chr (10)
    temp = Temp + "</ tr>" + chr (10)
    temp = Temp + "<tr> <td>"
    temp = Temp + "RAM" + "</ td> <td>" + cstr (rund (objitem.totalphysicalmemory / constmb)) + "MB </ td>" + chr (10)
    temp = Temp + "</ tr>" + chr (10)
    temp = Temp + "<tr> <td>"
    temp = Temp + "Computermodell" + "</ td> <td>" + objitem.model + "</ td>" + chr (10)
    temp = Temp + "</ tr>" + chr (10)
    compname = objitem.name
    Fall 1
    temp = Temp + "<tr> <td>"
    temp = Temp + "Motherboard" + "</ td> <td>" + objitem.SMBIOSBIOSVersion + "</ td>" + chr (10)
    temp = Temp + "</ tr>" + chr (10)
    temp = Temp + "<tr> <td>"
    temp = Temp + "BIOS" + "</ td> <td>" + objitem.caption + "</ td>" + chr (10) + "<td>" + chr (10) + "</ td>"
    temp = Temp + "</ tr>" + chr (10)
    Fall 2
    s = s + 1
    temp = Temp + "<tr>" + chr (10) + "<td>"
    temp = Temp + "Prozessor" + cstr (n) + "</ td>" + chr (10) + "<td>" + objitem.name + "Frequency" + cstr (objitem.CurrentClockSpeed) + chr (10) + " </ td> "
    temp = Temp + "</ tr>" + chr (10)
    Fall 3
    i = i + 1
    temp = Temp + "<tr>" + chr (10) + "<td>"
    wenn objitem.size> 0 then ‚= nill dann
    sizegb = CSTR (round (objitem.size / constgb, 2))
    sonst
    sizegb = CSTR (0)
    end if
    temp = TEMP + "HDD" CSTR + (i) + "</ td>" + chr (10) + "<td>" + objitem.model + "" + sizegb + "GB </ td>" + chr ( 10)
    temp = Temp + "</ tr>" + chr (10)
    Fall 4
    temp = Temp + "<tr>" + chr (10) + "<td>"
    temp = Temp + "Videokontroler" + "</ td>" + chr (10) + "<td>" + objitem.caption + chr (10) + "</ td>"
    temp = Temp + "</ tr>" + chr (10)
    Fall 5
    wenn objitem.adaptertypeid = 0 und objitem.netconnectionstatus = 2 dann
    temp = Temp + "<tr>" + chr (10) + "<td>"
    temp = Temp + "Netzwerkadapter" + "</ td>" + chr (10)
    temp = Temp + "<td>" + objitem.name + chr (10) + "</ td>"
    temp = Temp + "</ tr>" + chr (10)
    end if
    Fall 6
    temp = Temp + "<tr>" + chr (10) + "<td>"
    temp = Temp + "Soundkarte" + "</ td>" + chr (10)
    temp = Temp + "<td>" + objitem.caption + chr (10) + "</ td> </ tr>" + chr (10)
    Fall 7
    temp = Temp + "<tr>" + chr (10) + "<td>"
    temp = Temp + "SCSI-Adapter" + "</ td>" + chr (10)
    temp = Temp + "<td>" + objitem.manufacturer + "" + objitem.caption + chr (10) + "</ td> </ tr>" + chr (10)
    8 Fall
    d = d + 1
    temp = Temp + "<tr>" + chr (10) + "<td>"
    temp = TEMP + "Drucker" + CSTR (d) + "</ td>" + chr (10) + "<td>" + objitem.name + CHR (10) + "</ td>"
    temp = Temp + "</ tr>" + chr (10)
    Ende wählen
    nächste
    nächste
    ‚Der letzte Teil
    temp = Temp + "</ table> </ html>"
    ‚Datei Rekord
    Dim fso, tf
    Set fso = Create ( "Scripting.FileSystemObject")
    Set tf = fso.CreateTextFile ( "\\ servak ​​\ comp \" & compname & "htm", True)
    tf.Write (temp)
    tf.Close
    nächste





    Bestimmen , wann ein Konto läuft ab (Gibt das Ablaufdatum für ein Benutzerkonto):

    On Error Resume Next
    Set objUser = GetObject _
    ( "LDAP: // cn = myerken, ou = Management, dc = fabrikam, dc = com")

    dtmAccountExpiration = objUser.AccountExpirationDate

    Wenn err.number = -2147467259 Or _
    dtmAccountExpiration = „1.1.1970“ Dann
    WScript.Echo „kein Konto Ablauf angegeben“
    sonst
    WScript.Echo "Konto Ablauf:" & _
    objUser.AccountExpirationDate
    End If





    Ermitteln Wenn ein Benutzerkonto läuft ab (Berichte das Datum , das das MyerKen Active Directory - Benutzerkonto abgelaufen ist .):
      On Error Resume Next 
    Set objUser = GetObject _
    ( "LDAP: // cn = MyerKen, ou = Management, dc = NA, dc = fabrikam, dc = com")
    dtmAccountExpiration = objUser.AccountExpirationDate

    Wenn Err.Number = -2147467259 Oder dtmAccountExpiration = "1.1.1970" Dann
    WScript.Echo „kein Konto Ablauf angegeben“
    sonst
    WScript.Echo "Konto Ablauf:" & objUser.AccountExpirationDate
    End If





    Die Skript rekursiv alle Attribute der Domain - Benutzer setzt „Benutzer muss Kennwort bei der nächsten Anmeldung ändern “: PS Ddlya korrekt funktionieren, müssen Sie eine Variable strMyDomain Domain - Namen in Bezug auf die LDAP definiert werden - das heißt, alle Punkte durch „DC =“ ersetzt werden. Somit = die Domäne argo.com in Gleichstrom umgewandelt argo, DC = com in der Variablen strMyOU den Namen und die Organisationseinheit platzieren, welche Benutzer auf den Passwort-Reset-Prozess unterzogen werden müssen.

    dim strMyOU
    dim strMyDomain

    Dim objOU, objUser
    Dim strContainer, strLastUser

    strMyOU = "argo"
    strMyDomain = "DC = argo, DC = com"

    sub wiederkehrt (ou)
    strContainer = "OU =" + ou + "" + strMyDomain
    set objOU = GetObject ( "LDAP: //" & strContainer)
    Für jede objUser in objOU
    strLastUser = objUser.Get ( "name")
    Wenn objUser.Class = "organizationalUnit" Dann
    wiederkehrt (strLastUser + "OU =" + ou)
    Elseif objUser.Class = "user" Dann
    objUser.Put "pwdLastSet", 0
    objUser.SetInfo
    end if
    nächste
    End Sub

    wiederkehrt strMyOU

    WScript.Quit





    Erster SID (a) , um den Computer von AD:

    On Error Resume Next
    Dim Tmp, x, b, Sid
    Set objSysInfo = Create ( "ADSystemInfo")
    strComputerDN = objSysInfo.ComputerName
    Set objCmp = GetObject ( "LDAP: //" & strComputerDN)
    Sid = objCmp.objectSID
    GSID = "S-1-5 -" & Convert (16,19) und "-" & Convert (12,15) und "-" & Convert (8,11) & "-" & Wandel (4,7) & "-" & Convert (0,3)
    Set objGroup = Nothing

    CONVERT-Funktion (u, l)
    Tmp = ""
    Für x = UBound (Sid) -u UBound (Sid) -l Schritt -1
    b = AscB (MidB (SID, x + 1))
    Tmp = tmp & Hex (b \ 16) & Hex (b und 15)
    nächste
    Convert = Clng ( "& H" & Tmp)
    Ende Funktion
    wscript.echo (GSID)





    Suche in ActiveDirectory- Konten mit abgelaufenen Passwörtern: Wenn die NetBIOS - Domänennamen von dem DNS auf den ersten Punkt unterscheidet, die Arme statt dem Zeichenfolge dom = getObject ( „LDAP: // “ & DC) .get ( „Name“) den gewünschten Wert zuweisen

    On Error Resume Next

    DC = getObject ( "LDAP: // RootDSE") .get ( "defaultNamingContext")
    dom = getObject ( "LDAP: //" & DC) .get ( "Name")
    pwAge = getObject ( "WinNT: //" & dom) .get ( "MaxPasswordAge") / 86400

    set objConnection = Create ( "ADODB.Connection")
    objConnection.open "Provider = ADsDSOObject;"

    set objCmd = Create ( "ADODB.Command")
    objCmd.ActiveConnection = objConnection

    ‚- Befehl für Computerkonten suchen
    ‚Cmd = "<LDAP: //" & DC & ">; (objectclass = Computer); distinguishedName, samAccountName; subtree"

    ‚- Befehl für Benutzerkonten suchen
    cmd = "<LDAP: //" & DC & ">; (objectclass = person); distinguishedName, samAccountName; subtree"

    objCmd.CommandText = cmd

    set col = objCmd.execute

    wenn col.recordCount> 0 then
    col.moveFirst
    während nicht col.EOF
    dn = col.fields (0) .Value
    acc=col.fields(1).value

    set obj=getObject("LDAP://" & dn)
    accCtrl=obj.get("userAccountControl")

    if (accCtrl and &h10000)=0 then
    pwChg=obj.PasswordLastChanged
    if (Err.Number<>0) then
    E=CStr(Err.Number) & " " & Err.Description
    ' WScript.echo acc & space(16-len(acc)) & " - Error : " & E
    Err.clear
    else
    if (now-pwChg)>pwAge then
    WScript.echo acc & space(16-len(acc)) & " - Expired : " & (pwChg+pwAge)
    else
    ' WScript.echo acc & space(16-len(acc)) & " - Expire on : " & (pwChg+pwAge)
    end if
    end if
    else
    ' WScript.echo acc & space(16-len(acc)) & " - Never Expire"
    end if
    col.moveNext
    wend
    end If

    objConnection.close





    Скрипт опрашивает компьютеры домена на предмет того, какой пользователь залогинен в данный момент на каждом компьютере :

    On Error Resume Next

    Const ADS_SCOPE_SUBTREE = 2

    Set objRoot = GetObject("LDAP://RootDSE")
    strDomainName = objRoot.Get("DefaultNamingContext")
    Set objRoot = Nothing

    strComputer = ""
    Dim fso
    Dim file

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.OpenTextFile ("logged_user_list.txt", 2, True)
    Set objShell = CreateObject("WScript.Shell")

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"

    Set objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "Select Name, Location from 'LDAP://" & strDomainName & "'" _
    & "Where objectClass ='computer'"
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    Set objRecordSet = objCommand.Execute

    & #39;****************************************************************************
    ******

    objRecordSet.MoveFirst

    Wscript.Echo "Processing information. This might take several minutes."

    Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    ' Проверяем доступность компьютера с помощью команды PING
    ' и анализа выходного потока

    Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 1 " & strComputer)
    strPingResults = LCase(objScriptExec.StdOut.ReadAll)

    ' Если компьютер отвечает, подключаемся к его WMI

    If InStr(strPingResults, "ttl=") Then
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colComputer = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")

    ' Выводим список залогиненных пользователей в файл и на экран

    For Each objComputer in colComputer
    Wscript.Echo "Logged-on " &strComputer & " user: " & objComputer.UserName
    file.WriteLine("Logged-on " &strComputer & " user: " & objComputer.UserName)
    nächste
    objRecordSet.MoveNext

    ' Если компьютер не отвечает - выводим сообщение и перемещаемся к следующему

    sonst
    WScript.Echo(strComputer & ": Не отвечает...")
    objRecordSet.MoveNext
    End If
    Loop





    Этот скрипт просматривает системный журнал Безопасность и если обнаружит в нём запись об изменении настроек браузера, то уведомит об этом :

    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{"{impersonationLevel=impersonate,(Security)}!\\" & strComputer & _
    "\root\cimv2")
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA " _
    & "'Win32_NTLogEvent' AND TargetInstance.EventCode = '560' AND " _
    & "TargetInstance.Logfile = 'Security' GROUP WITHIN 2")
    Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    strAlertToSend = "Internet Explorer security settings have been " & _
    "changed."
    Wscript.Echo strAlertToSend
    Loop





    Скрипт ищет по всем контроллерам пользователей, которые не логинились уже более 90 дней и дизейблит их. После чего скидывает в файл их имена в форме Distinguished Name:

    Dim objRootDSE, strConfig, adoConnection, adoCommand, strQuery
    Dim adoRecordset, objDC
    Dim strDNSDomain, objShell, lngBiasKey, lngBias, k, arrstrDCs()
    Dim strDN, dtmDate, objDate, lngDate, objList, strUser
    Dim strBase, strFilter, strAttributes, lngHigh, lngLow
    Dim intUAC, objCurrentUser

    ' Использование объектов словаря чтоб потом узнать последние логоны пользователя.
    Set objList = CreateObject("Scripting.Dictionary")
    objList.CompareMode = vbTextCompare

    ' Получение местного времени с реестра.
    Set objShell = CreateObject("Wscript.Shell")
    lngBiasKey = objShell.RegRead("HKLM\System\CurrentControlSet\Control\" _
    & "TimeZoneInformation\ActiveTimeBias")
    If (UCase(TypeName(lngBiasKey)) = "LONG") Then
    lngBias = lngBiasKey
    ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()") Then
    lngBias = 0
    For k = 0 To UBound(lngBiasKey)
    lngBias = lngBias + (lngBiasKey(k) * 256^k)
    nächste
    End If

    ' Получение конфигурациы и доменов из объектов RootDSE.
    Set objRootDSE = GetObject("LDAP://RootDSE")
    strConfig = objRootDSE.Get("configurationNamingContext")
    strDNSDomain = objRootDSE.Get("defaultNamingContext")

    ' Использование ADO чтобы искать в Active Directory ObjectClass nTDSDSA.
    Set adoCommand = CreateObject("ADODB.Command")
    Set adoConnection = CreateObject("ADODB.Connection")
    adoConnection.Provider = "ADsDSOObject"
    adoConnection.Open "Active Directory Provider"
    adoCommand.ActiveConnection = adoConnection

    strBase = "<LDAP://" & strConfig & ">"
    strFilter = "(objectClass=nTDSDSA)"
    strAttributes = "AdsPath"
    strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"

    adoCommand.CommandText = strQuery
    adoCommand.Properties("Page Size") = 100
    adoCommand.Properties("Timeout") = 60
    adoCommand.Properties("Cache Results") = False

    Set adoRecordset = adoCommand.Execute


    k = 0
    Do Until adoRecordset.EOF
    Set objDC = _
    GetObject(GetObject(adoRecordset.Fields("AdsPath")).Parent)
    ReDim Preserve arrstrDCs(k)
    arrstrDCs(k) = objDC.DNSHostName
    k = k + 1
    adoRecordset.MoveNext
    Loop
    adoRecordset.Close

    ' Получение атрибута последнего логона для каждого пользователя в контроллерах домена.
    For k = 0 To Ubound(arrstrDCs)
    strBase = "<LDAP://" & arrstrDCs(k) & "/" & strDNSDomain & ">"
    strFilter = "(&(objectCategory=person)(objectClass=user))"
    strAttributes = "distinguishedName,lastLogon"
    strQuery = strBase & ";" & strFilter & ";" & strAttributes _
    & ";subtree"
    adoCommand.CommandText = strQuery
    On Error Resume Next
    Set adoRecordset = adoCommand.Execute
    If (Err.Number <> 0) Then
    On Error GoTo 0
    Wscript.Echo "Контроллер домена MGSM.RU не найден: " & arrstrDCs(k)
    sonst
    On Error GoTo 0
    Do Until adoRecordset.EOF
    strDN = adoRecordset.Fields("distinguishedName")
    lngDate = adoRecordset.Fields("lastLogon")
    On Error Resume Next
    Set objDate = lngDate
    If (Err.Number <> 0) Then
    On Error GoTo 0
    dtmDate = #1/1/1601#
    sonst
    On Error GoTo 0
    lngHigh = objDate.HighPart
    lngLow = objDate.LowPart
    If (lngLow < 0) Then
    lngHigh = lngHigh + 1
    End If
    If (lngHigh = 0) And (lngLow = 0 ) Then
    dtmDate = #1/1/1601#
    sonst
    dtmDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _
    + lngLow)/600000000 - lngBias)/1440
    End If
    End If
    If (objList.Exists(strDN) = True) Then
    If (dtmDate > objList(strDN)) Then
    objList.Item(strDN) = dtmDate
    End If
    sonst
    objList.Add strDN, dtmDate
    End If
    adoRecordset.MoveNext
    Loop
    adoRecordset.Close
    End If
    nächste

    ' Создание логов
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objScriptFile = objFSO.OpenTextFile("c:\scripts\Account_lockout.vbs", _
    ForReading)
    Set objCommentFile = objFSO.OpenTextFile("c:\scripts\Lockedout_users.txt", _
    ForWriting, TRUE)

    'Сравнение дат

    dblCurrentdate = Cdbl(date)
    Const ADS_UF_ACCOUNTDISABLE = 2
    Const ForReading = 1
    Const ForWriting = 2

    For Each strUser In objList.Keys

    dblUserdate = Cdbl(objList.Item(strUser))

    If (dblCurrentdate - dblUserdate > 90) Then



    Set objCurrentUser = GetObject ("LDAP://" & strUser & "")
    intUAC = objCurrentUser.Get("userAccountControl")

    objCurrentUser.Put "userAccountControl", intUAC OR ADS_UF_ACCOUNTDISABLE
    objCurrentUser.SetInfo

    objCommentFile.Write strUser & VbCrLf

    ' Wscript.Echo strUser & " заблокирован"



    sonst

    ' Wscript.Echo strUser & " недавно логинился"



    End if


    nächste

    'Закрытие логов
    objScriptFile.Close
    objCommentFile.Close


    ' Очистка.
    adoConnection.Close
    Set objRootDSE = Nothing
    Set adoConnection = Nothing
    Set adoCommand = Nothing
    Set adoRecordset = Nothing
    Set objDC = Nothing
    Set objDate = Nothing
    Set objList = Nothing
    Set objShell = Nothing
    Set objCurrentUser = Nothing





    командный файл (closefl.bat ) закрывает все файлы, открытые пользователями в сети на вашем компьютере:
    if exist d:\files.txt del d:\files.txt
    net file > d:\files.txt
    for /f "skip=5 tokens=1" %%i in (d:\files.txt) do net file %%i /close
    del d:\files.txt
    
    





    Скрипт для уведомления пользователя об окончании действия учетки в домене за 10 дней: строке - dtmDaysToExpire > 10 ). Бросать в логон. В 5-й и 7-й строке подставить свои значения для домена и подразделения.

    ' Script name: WarnUserAboutAccountExpiration.vbs
    ' Created by Alex_GR - 26/05/2008

    'Указываем домен
    Const strDomainName="domen.com"
    'Указываем OU в AD, внутри которой мы будем искать
    Const strStartOU="Domain Users"
    strDomainDN="DC="&Replace(strDomainName,".",",DC=")

    On Error Resume Next
    'Option Explicit
    Dim strUserName, oNetwork, aConnection, aCommand, aResult, strDN, dtmAccountExpiration, dtmDaysToExpire, oShell
    Set oNetwork = CreateObject("Wscript.network")
    Set oShell = CreateObject("Wscript.shell")
    strUserName = oNetwork.UserName
    Set aConnection = CreateObject("ADODB.Connection")
    Set aCommand = CreateObject("ADODB.Command")
    aConnection.Provider = "ADsDSOObject"
    aConnection.Open
    aCommand.ActiveConnection = aConnection
    aCommand.CommandText="<LDAP://OU="&strStartOU&","&strDomainDN&">;(&(objectCategory=User)(samAccountName=" & strUserName & "));distinguishedName;subTree"
    Set aResult = aCommand.Execute()
    strDN = aResult.Fields("distinguishedName")
    Set objUser = GetObject("LDAP://" & strDN)
    dtmAccountExpiration = objUser.AccountExpirationDate
    dtmDaysToExpire = DateDiff("d", Now, dtmAccountExpiration)
    If Err.Number = -2147467259 Or dtmAccountExpiration = "1/1/1970" Or dtmAccountExpiration = "01/01/1601 03:00:00" Or dtmAccountExpiration = "01.01.1601 03:00:00" Or dtmAccountExpiration = "1.1.1970" Or dtmDaysToExpire > 10 Then
    ' Можно выводить другое сообщение, если найдено соответствие условию
    ' MsgBox "Всe good "
    sonst
    oShell.Popup "До окончания испытательного срока осталось " & dtmDaysToExpire & " дней!" & vbCrLf & _
    "Учётная запись действительна до " & dtmAccountExpiration & vbCrLf & _
    "Просьба об этом уведомить Вашего руководителя.", 60, "Уведомление от ИТ Департамента", 48+0
    End If





    Скрипт для поиска в активном каталоге пользователей с ограниченым сроком действия учётки и экспорта в файл: В 5-й и 7-й строке подставить свои значения для домена и подразделения.

    ' Script name: UserAccountExpirationDate.vbs
    ' Created by Alex_GR - 12/05/2008

    'Указываем домен
    Const strDomainName="domen.com"
    'Указываем OU в AD, внутри которой мы будем искать
    Const strStartOU="Domain Users"
    strDomainDN="DC="&Replace(strDomainName,".",",DC=")

    ---------------------Получение данных--------------------
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "<LDAP://OU="&strStartOU&","&strDomainDN&">;(&(objectCategory=person)(objectClass=user));ADsPath;subtree"
    objCommand.Properties("Page Size")=9000

    Set objRecordSet = objCommand.Execute

    Const ForAppending = 2
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile ("c:\UserAccountExpirationDate.txt", ForAppending, True)

    '------Индексирование --------
    While Not objRecordset.EOF
    strADsPath = objRecordset.Fields("ADsPath")
    Set objUser = GetObject(strADsPath)

    dtmAccountExpiration = objUser.AccountExpirationDate

    If err.number = -2147467259 Or dtmAccountExpiration = "01/01/1970" Or dtmAccountExpiration = "01/01/1601 03:00:00" Or dtmAccountExpiration = "01.01.1601 03:00:00" Or dtmAccountExpiration = "01.01.1970" Then
    'Вывод сообщением
    'WScript.echo ""

    'запись в файл пустого значения
    objTextFile.Write ""
    objRecordset.MoveNext

    sonst
    'Вывод сообщением
    ' WScript.echo objUser.displayName & " - учётка действительна до: " & objUser.AccountExpirationDate

    'Запись в файл
    objTextFile.WriteLine objUser.displayName & " - учётка действительна до: " & objUser.AccountExpirationDate
    objRecordset.MoveNext
    End If

    Wend
    objConnection.Close
    WScript.echo "Экспорт закончен, файл создан - C:\UserAccountExpirationDate.txt"





    Скрипт який перевіряеє нових юзерів і відсилає ім лист з вказаним текстом: (переверяє з тією ж періодичністю з якою виконуеться скрипт тобто та яка вказана в Scheduled Tasks)

    'Created by Mike Ruman 8/13/05
    'Sends an email to accounts created today.

    Dim StrDate, CurrentUTC

    'Create the current date and time stamp for query for day before last
    CurrentUTC = DatePart("yyyy", Date)
    'now add Month in mm if only M add leading 0
    if DatePart("m" , Now) < 10 then
    CurrentUTC = CurrentUTC & 0 & DatePart("m" , Now)
    else
    CurrentUTC = CurrentUTC & DatePart("m" , Now)
    end if
    'now add Day in dd if only d add leading 0
    if DatePart("d" , Now) < 10 then
    'OPTIONAL - FOR MANY DAYS, replace line below with CurrentUTC = CurrentUTC & 0 & DatePart("d" , Now - X) where X = # of days

    CurrentUTC = CurrentUTC & 0 & DatePart("d" , Now)
    else
    'OPTIONAL - FOR MANY DAYS, replace line below with CurrentUTC = CurrentUTC & DatePart("d" , Now - X) where X = # of days
    CurrentUTC = CurrentUTC & DatePart("d" , Now)
    end if
    ' Tag hour, minute, second on
    strDate = CurrentUTC&"000001.0Z"

    'Create AD Connection
    Set oConnection1 = CreateObject("ADODB.Connection")
    Set oCommand1 = CreateObject("ADODB.Command")
    oConnection1.Provider = "ADsDSOObject" ' This is the ADSI OLE-DB provider name
    oConnection1.Open "Active Directory Provider"
    ' Create a command object for this connection.
    Set oCommand1.ActiveConnection = oConnection1
    'Set Query definition
    ' тут задаем доменные параметры берем из AD
    oCommand1.CommandText = "select mail from 'LDAP://DC=it, DC=local' WHERE objectCategory='Person' AND objectClass='user'AND msExchHideFromAddressLists<>'True' AND whenCreated>='" & strDate & "'"

    oCommand1.Properties("Page Size") = 30000
    ' Execute the query.
    Set rs = oCommand1.Execute


    rs.movefirst
    'Create the loop of results
    Do Until rs.EOF = True


    'Create Email
    ' настройки письма для пользователя
    Set objEmail = CreateObject("CDO.Message")
    objEmail.From = "Admin@mycantora.ua"
    objEmail.To = rs.Fields("mail")
    'Optional BCC field
    'objEmail.BCC = "Admin@mycantora.ua"
    objMessage.BodyPart.CharSet = "windows-1251"
    objEmail.Subject = "A welcome message from Exchange"
    objEmail.Textbody = "Добро пожаловать в ........."
    'Optional Add an attachment
    'objEmail.AddAttachment "C:\new_hire_audio_message.wav"
    objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "ExchangeServer" 'Replace ExchangeServer with server IP or name
    objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objEmail.Configuration.Fields.Update
    'Optional - Read the message before it's sent
    'MsgBox objEmail.GetStream.ReadText
    objEmail.Send
    rs.movenext
    Loop

    'Close AD Connection
    oConnection1.close





    Этот скрипт vbs, написанный мной спонтанно, позволяет устанавливать или сбрасывать флажок «разрешить удалённый доступ к этому компьютеру» на вкладке удалённые сеансы в свойствах системы! Теперь вы сможете подключаться к удалённому рабочему столу любой машины в вашей сети…: Переписать скрипт на любой язык программирования, включая мой любимый С++ не составит труда даже для самых юных кодеров! VBS выбран мной только из соображений лени, если так можно выразиться (под руками был генератор скриптов именно vbs) правда править его ручками пришлось всё равно!

    1. подставьте нужные значения
    strComputer = "ИмяУдалённогоКомпьютера"
    strDomain = "ИмяДомена"
    2. подставьте имя машины на которой запускаете скрипт
    ServerName='ИмяКомпьютера'
    3. параметр = 1 установит флажок параметр = 0 сбросит его
    objInParam.Properties_.Item("AllowTSConnections") = 1

    Запустить скрипт легко по контекстному меню смотрите рисунки.

    PS Проверено на 32 битных и 64 битных системах (WindowsServer2003, WindowsXP)

    strComputer = "ИмяУдалённогоКомпьютера"
    strDomain = "ИмяДомена"
    Wscript.StdOut.Write "Please enter your user name:"
    strUser = Wscript.StdIn.ReadLine
    Set objPassword = CreateObject("ScriptPW.Password")
    Wscript.StdOut.Write "Please enter your password:"
    strPassword = objPassword.GetPassword()
    Wscript.Echo

    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
    "root\CIMV2", _
    strUser, _
    strPassword, _
    "MS_409", _
    "ntlmdomain:" + strDomain)
    ' Obtain an instance of the the class
    ' using a key property value.
    Set objShare = objWMIService.Get("Win32_TerminalServiceSetting.ServerName='ИмяКомпьютера'")

    ' Obtain an InParameters object specific
    ' to the method.
    Set objInParam = objShare.Methods_("SetAllowTSConnections"). _
    inParameters.SpawnInstance_()


    ' Add the input parameters.
    objInParam.Properties_.Item("AllowTSConnections") = 1

    ' Execute the method and obtain the return status.
    ' The OutParameters object in objOutParams
    ' is created by the provider.
    Set objOutParams = objWMIService.ExecMethod("Win32_TerminalServiceSetting.ServerName='ИмяКомпьютера'", "SetAllowTSConnections", objInParam)

    ' List OutParams
    Wscript.Echo "Out Parameters: "
    Wscript.echo "ReturnValue: " & objOutParams.ReturnValue






    выключить--включить адаптер:

    strNetConn = "Сетевые подключения" ' Network Connections для англ. версии ОС
    strConn = "Подключение по локальной сети" ' имя или часть имени подключения
    strEnable = "&Включить" ' En&able для англ. версии ОС
    strDisable = "&Отключить" ' Disa&ble для англ. версии ОС

    Set objShell = CreateObject("Shell.Application")
    Set objCP = objShell.Namespace(3) ' Панель управления
    For Each elem in objCP.Items
    If elem.Name = strNetConn Then
    ' получение папки "Сетевые подключения"
    Set colNetwork = elem.GetFolder
    Exit For
    End If
    nächste

    Set Conn = Nothing
    For Each clsConn in colNetwork.Items
    If Instr(LCase(clsConn.name), LCase(strConn)) Then
    ' получение указанного подключения
    Set Conn = clsConn
    Exit For
    End If
    nächste
    If Conn Is Nothing Then
    WScript.Echo "Network Connection not found"
    WScript.Quit
    End If

    bEnabled = True
    Set objEnable = Nothing
    Set objDisable = Nothing
    For Each clsVerb in Conn.verbs
    ' если доступен глагол "Enable", подключение отключено
    If clsVerb.Name = strEnable Then
    Set objEnable = clsVerb
    bEnabled = False
    End If
    ' если доступен глагол "Disable", подключение подключено
    If clsVerb.name = strDisable Then
    Set objDisable = clsVerb
    End If
    nächste

    If bEnabled Then
    objDisable.DoIt
    strStatus = "disabled."
    sonst
    objEnable.DoIt
    strStatus = "enabled."
    End If
    WScript.Sleep 1000

    WScript.Echo Conn.Name & " " & strStatus





    Скрипт для перезапуска ADSL мопеда D-link DSL-2640U: "telnet.exe 192.168.1.1" - или другой IP на котором сидит модем Будет работать и на других моделях но возможно придется посмотреть в телнете что писать в oShell.SendKeys "??" & chr(13) после того как залогинишся
     rem Заходим на мопед 
    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.Run "telnet.exe 192.168.1.1"
    WScript.Sleep 1000
    oShell.SendKeys "Имя" & chr(13)
    WScript.Sleep 1000
    oShell.SendKeys "Пароль" & chr(13)
    rem Перезапускаем
    WScript.Sleep 1000
    oShell.SendKeys "13" & chr(13)
    WScript.Sleep 1000
    oShell.SendKeys "1" & chr(13)





    скрипт для создания учеток пользователей из списка. (txt, xls): где файл users.csv должен содержать информацию о юзерах в следующем формате.
    Import-CSV users.csv | ForEach-Object { New-QADUser -ParentContainer scorpio.local/users -Name ($_.Familia + ', ' + $_.Imya) -samAccountName ($_.Imya[0] + $_.Familia) -Department $_.Department -Title $_.Title}
    
    





    Перезапуск служб apache , mysql , cron , sendmail :
    #!/bin/bash
    echo "Services restart: ";
    
    cd /etc/rc.d/init.d/
    ./httpd restart
    ./mysqld restart
    ./crond restart
    ./sendmail restart