Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования. Часть 2

Автор: slayer120
Дата сообщения: 01.08.2007 17:08
Lovec
Да у меня стоит запуск по определенным дням в планировщике. Может в этом дело?
А у тебя - при старте стоит? Вообще сервак до меня ставили тут еще кучка ардейтов накачена кроме sp4 Ну и запуск от имени доменного админа стоит, тоже проверь.
Попробуй создай заново задание, может прокатит
Автор: SPV_Ed
Дата сообщения: 02.08.2007 06:00

Цитата:
А какой смысл мне через командную строку создавать задание, если я создаю его напрямую, мышкой и оно не выполняется?

А в SchedLgU.Txt что-нибудь рапортует?
Автор: Sid Salmon
Дата сообщения: 02.08.2007 07:04
cluster
вот это должно помочь
[more]
Код: [nocode]
'////////////////////////////////////////////////////////////////////////////
'
'    ISA Server Ad blocking import / export script
'
'    Author:    Jim Harrison
'
'    Contact:    jim@isatools.org
'            www.ISAtools.org
'
'    Created:    4/15/02
'
'    Purpose:    Creates a destination set and a site & content rule to block advertisements in
'            web pages
'
'    Usage:    Either dbl-click it from Windows explorer or as "cscript ISA_Ads.vbs" from a
'            command line
'
'    History:    4/15/02    - First working version
'            4/20/02    - Fixed bug in SCR creation that would cause "conf can't be read"
'                    event log errors
'            12/17/02- Added HF65/SP1 fix (Q297324) to the script if file version is correct
'
'    ToDo:    Lots - see each section for small details
'            Make it Enterprise-policy aware
'            Make it merge-smart
'
'////////////////////////////////////////////////////////////////////////////

'so we don't lie to ourselves about our variables
Option Explicit

'global class for general use
Dim Tools

'Let's do this
Set Tools = New ISATools
Main

'Let's undo this
Set Tools = Nothing


'////////////////////////////////////////////////////////////////////////////
'
'    Sub Main
'
'    Purpose:    Handles the inital ISA and XML object creation and chains off to other routines
'            depending on the options chosen
'
'    Input:    None
'
'    Output:    XMLDocument and ISA objects for other routines
'
'    ToDo:    nothing?
'
'////////////////////////////////////////////////////////////////////////////

Sub Main

    'ISA variables
    Dim FPC
    Dim ISA

    'XML variables
    Dim XMLDoc

    'Create the ISA Server admin object
    Set FPC = CreateObject ( "FPC.Root" )
    FPC.Refresh
    Set ISA = FPC.Enterprise

    'create the XML document object
    Set XMLDoc = CreateObject ( "Microsoft.XMLDom" )
    XMLDoc.Async = False

    'Let's get someone to make a decision
    Select Case ImpExp
        Case "import":
            Import XMLDoc, ISA
            FixAuth ISA
        Case "export": Export XMLDoc, ISA
    End Select

End Sub


'////////////////////////////////////////////////////////////////////////////
'
'    Function ImpExp
'
'    Purpose:    Prompts the user for their choice of "Import" or "Export" and handles
'            incorrect input
'
'    Input:    from the user via Tools class input routine
'
'    Output:    returns one of two valid options to caller
'
'    ToDo:    nothing?
'
'////////////////////////////////////////////////////////////////////////////

Function ImpExp ( )

    Dim Answer
    Answer = LCase ( Tools.GetAns ( Tools.ImpExp, "Import" ) )
    Select Case Answer
        Case "import", "export": ImpExp = Answer
        Case Else:
            Tools.ShowErr ( Tools.OptsErr )
            ImpExp
    End Select

End Function


'////////////////////////////////////////////////////////////////////////////
'
'    Sub Import
'
'    Purpose:    Reads the input file and creates the destination set based on the data found
'            there
'
'    Input:    XMLDoc and ISA objects from sub Main
'            from the user via Tools class input routine
'            from the xml file
'
'    Output:    creates a destination set in ISA with data from source XML
'
'    ToDo:    add capability to read CSV, TSV as well as XML
'
'////////////////////////////////////////////////////////////////////////////

Sub Import ( XMLDoc, ISA )

    On Error Resume Next

    Dim Ads
    Dim DestinationSet
    Dim Destination
    Dim OldDest
    Dim DType
    Dim Ans
    Dim InVal1
    Dim InVal2
    Dim InVal3
    Const DestExist = &h80070002
    Const Domain     = 0
    Const SingleIP    = 1
    Const IPRange    = 2

    Ans = Tools.GetAns ( Tools.SrcFileMsg, Tools.FileIn )
    If Tools.FindFile ( Ans ) Then
        Tools.FileIn = Ans
        XMLDoc.Load ( Tools.FileIn )
    Else
        Tools.ShowErr ( Tools.FNFMsg )
        Import XMLDoc, ISA
    End If

    Set Ads = XMLDoc.SelectSingleNode ( "Ads" )

    'try to create the DS, and ask] for merge if fails
    Set DestinationSet = MakeDs ( ISA )

    'came back to do it; let's see what there is to do
    For Each Destination in Ads.SelectNodes ( "Destination" )

        DType = CInt ( Destination.GetAttribute ( "Type" ) )

        Select Case DType
            Case Domain
                InVal1 = Destination.GetAttribute ( "DomainName" )
                InVal2 = ""
            Case SingleIP
                InVal1 = Destination.GetAttribute ( "IP_From" )
                InVal2 = ""
            Case IPRange
                InVal1 = Destination.GetAttribute ( "IP_From" )
                InVal2 = Destination.GetAttribute ( "IP_To" )
        End Select

        InVal3 = Destination.GetAttribute ( "Path" )
        DestinationSet.Add InVal1, InVal2, InVal3

        Err.Clear

    Next

    DestinationSet.Save

    MakeScr ISA

End Sub


'////////////////////////////////////////////////////////////////////////////
'
'    Function MakeDs
'
'    Purpose:    creates a destination set named according to user input
'
'    Input:    ISA object from Sub Import
'            from the user via Tools class input routine
'
'    Output:    returns a destination set object to sub Import
'
'    ToDo:    Ds Merge support
'
'////////////////////////////////////////////////////////////////////////////

Function MakeDs ( ISA )

    On Error Resume Next
    Dim Rtn
    Dim Ans
    Const DupDs = &h800700b7

    Err.Clear
    Rtn = Tools.GetAns ( Tools.DsQuery, Tools.DsName )

    Set MakeDs = ISA.PolicyElements.DestinationSets.Add ( Rtn )
    Select Case Err.Number
        Case 0
            Tools.DsName = Rtn
            MakeDs.Description = Tools.DsDescr
            Exit Function
        Case DupDs
            If Not Tools.AskYN ( Tools.DsDup ) Then
                If Not Tools.AskYN ( Tools.QuitMsg ) Then Set MakeDs = MakeDs ( ISA )
            End If
            Err.Clear
        Case Else
            If Not Tools.AskYN ( Tools.DsErr ) Then WScript.Quit
    End Select

    Set MakeDs = MakeDs ( ISA )

    Err.Clear

End Function


'////////////////////////////////////////////////////////////////////////////
'
'    Function MakeScr
'
'    Purpose:    creates a Site and Content Rule associated with the chosen destination set
'
'    Input:    XMLDoc and ISA objects from Import subroutine
'            from the user via Tools class input routine
'
'    Output:    creates a new S&C rule
'
'    ToDo:    option to change data in existing S&C Rule
'            ability to import this as well
'
'////////////////////////////////////////////////////////////////////////////

Function MakeScr ( ISA )

    On Error Resume Next
    Dim Rtn
    Dim TempScr
    Const DupScr = &h800700b7
    Const fpcArrayScope = 0
    Const fpcEnterpriseScope = 0

    Err.Clear
    Rtn = Tools.GetAns ( Tools.ScrQuery, Tools.ScrName )

    Set MakeScr = ISA.EnterprisePolicies.Item(0).SiteAndContentRules.Add ( Rtn )
'    Wscript.Echo "MakeScr ( " & Rtn & " ) = 0x" & Hex ( Err.Number )
    Select Case Err.Number
        Case 0
            Tools.ScrName = Rtn
        Case Else
            If Not Tools.AskYN ( Tools.ScrDup ) Then
                WScript.Quit
            Else
                Set MakeScr = MakeScr ( ISA )
            End If
    End Select

    MakeScr.Description = Tools.ScrDescr
    MakeScr.Enabled = "True"
    MakeScr.Action = "1"
    MakeScr.AppliesToContentMethod = "0"
    MakeScr.SetDestination "3", Tools.DsName
    MakeScr.SetSchedule ( "Always" ), fpcEnterpriseScope
    MakeScr.AppliesToMethod = "0"
    MakeScr.Save

End Function


'////////////////////////////////////////////////////////////////////////////
'
'    Sub Export
'
'    Purpose:    Creates an xml file containing the data in the chosen destination set
'
'    Input:    from the user via Tools class input routines
'            properties of the specified destination set
'
'    Output:    creates an xml file according to user input
'
'    ToDo:    option to merge data in existing XML, CSV, TSV file
'
'////////////////////////////////////////////////////////////////////////////

Sub Export ( XMLDoc, ISA )

    Dim Ads
    Dim DestinationSet
    Dim Destination
    Dim Dest
    Dim DType
    Dim NewDest
    Dim Rtn

    'Destination set info
    Const Domain     = 0
    Const SingleIP    = 1
    Const IPRange    = 2

    AskDestFile

    Set DestinationSet = GetDs ( ISA )

    XMLDoc.LoadXML ( "<Ads/>" )
    Set Ads = XMLDoc.SelectSingleNode ( "Ads" )
    Ads.AppendChild ( XMLDoc.CreateComment ( Tools.XMLComm ) )
    For Each Destination in DestinationSet
        Set Dest = XMLDoc.CreateNode ( 1, "Destination", "" )
        Set NewDest = Ads.AppendChild ( Dest )
        DType = Destination.Type
        NewDest.SetAttribute "Type", DType
        Select Case DType
            Case Domain
                NewDest.SetAttribute "DomainName", Destination.DomainName
            Case SingleIP
                NewDest.SetAttribute "IP_From", Destination.IP_From
            Case IPRange
                NewDest.SetAttribute "IP_From", Destination.IP_From
                NewDest.SetAttribute "IP_To", Destination.IP_To
        End Select
        NewDest.SetAttribute "Path", Destination.Path
    Next

    XMLDoc.Save Tools.FileOut

    Tools.Showinfo "Done with the Export thingy.." & vbCrLf & "Saved it as: " & Tools.FileOut

End Sub


'////////////////////////////////////////////////////////////////////////////
'
'    Function AskDestFile
'
'    Purpose:    Prompts the user for a place to save the output file
'            Verifies the existence of the file
'
'    Input:    from the user via Tools class input routines
'
'    Output:    returns a verified file location
'
'    ToDo:    error checking and file merge support
'
'////////////////////////////////////////////////////////////////////////////

Function AskDestFile

    Dim Rtn

    'find out where to save the exported data
    AskDestFile = Tools.GetAns ( Tools.DestFileMsg, Tools.FileOut )
    If Tools.FindFile ( AskDestFile ) Then
        Tools.ShowErr ( Tools.FileExistsMsg )
        AskDestFile
    Else
        Tools.FileOut = AskDestFile
    End If

End Function


'////////////////////////////////////////////////////////////////////////////
'
'    Function GetDs
'
'    Purpose:    Prompts the user for the Destination Set of choice
'
'    Input:    ISA object from Export function
'            from the user via Tools class input routines
'            verifies the specified destination set
'
'    Output:    returns a DestinationSet object
'
'    ToDo:    error checking
'
'////////////////////////////////////////////////////////////////////////////

Function GetDs ( ISA )

    On Error Resume Next
    Dim Rtn
    'find out what Ds to export
    Rtn = Tools.GetAns ( Tools.DsQuery, Tools.DsName )
    Set GetDs = ISA.PolicyElements.DestinationSets.Item ( Rtn )
    If Err Then
        Tools.ShowErr ( Tools.DsErrMsg )
        Set GetDs = GetDs ( ISA )
    End If
    On Error Goto 0

End Function


'////////////////////////////////////////////////////////////////////////////
'
'    Sub FixAuth
'
'    Purpose:    Fixes auth popups if hp65 or SP1 is installed
'
'    Input:    ISA object from Main sub
'
'    Output:    Registry entry supporting ReturnDeniedIfAuthenticated
'            Some msgboxes
'
'    ToDo:    ??
'
'////////////////////////////////////////////////////////////////////////////

Sub FixAuth ( ISA )

    On Error Resume Next

    Dim VerArray
    Dim RealVer
    Dim FileVer: FileVer = Array( 3, 0, 1200, 65 )
    Dim BadVer: BadVer = False
    Dim WshShell
    Dim FSO
    Dim InstlFolder
    Dim Rtn
    Dim i    'counter

    Const W3Proxy = "W3Proxy.exe"
    Const RegRoot = "HKLM\System\CurrentControlSet\Services\W3proxy\Parameters\"
    Const RegEntry = "ReturnDeniedIfAuthenticated"
    Const RegVal = &h00000001
    Const RegType = "REG_DWORD"

    Set FSO = CreateObject( "Scripting.FileSystemObject" )
    Set WshShell = CreateObject( "WScript.Shell" )

    InstlFolder = ISA.Servers.GetContainingServer.InstallationDirectory & "\"

    'Find the interesting file version
    RealVer = FSO.GetFileVersion( InstlFolder & W3Proxy )
    If Err.Number <> 0 Then
        Wscript.Echo "Error 0x" & Hex( Err.Number ) & _
            " while trying to read the version of " & InstlFolder
            Err.Clear
        Exit Sub
    End If

    'make an array out of it
    VerArray = Split( RealVer, "." )
    If Err.Number <> 0 Then
        Wscript.Echo "Error 0x" & Hex( Err.Number ) & _
            " while trying to split " & RealVer
            Err.Clear
        Exit Sub
    End If

    'Compare the two arrays
    If UBound( VerArray ) = UBound( FileVer ) Then
        For i = 0 to UBound ( FileVer )
            If CLng( FileVer( i ) ) > CLng( VerArray( i ) ) Then
                BadVer = True
            End If
            If Err.Number <> 0 Then
                Wscript.Echo "Error 0x" & Hex( Err.Number ) & _
                    " while trying evaluate FileVer and VerArray"
                BadVer = True
            End If
            If BadVer Then Exit For
        Next
    Else
        BadVer = True
    End If

    If Not BadVer Then
        Rtn = WshShell.RegRead( RegRoot & RegEntry )
        If ( Err.Number <> 0 ) Or ( Rtn = 0 ) Then
            If MsgBox( Tools.AuthOkMsg, vbYesNo, Tools.ScriptTitle ) = vbYes Then
                Err.Clear
                WshShell.RegWrite RegRoot & RegEntry, RegVal, RegType
                If Err.Number = 0 Then
                    If MsgBox( Tools.RstW3msg, vbYesNo, Tools.ScriptTitle ) = vbYes Then _
                        WshShell.Run "%ComSpec% /C net stop w3proxy && net start w3proxy", 10, False
                Else
                    Wscript.Echo "Error 0x" & Hex( Err.Number ) & _
                        " while trying to update the registry with" & RegRoot & RegEntry & _
                        " = " & RegVal & "; " & RegType
                        Err.Clear
                        Exit Sub
                End If
            End If
        End If
    Else
        Wscript.Echo InstlFolder & W3Proxy & " is not updated; file version = '" & RealVer & "'." & _
                    vbCrLf & "You need to install ISA SP1 (http://support.microsoft.com/?id=313139)"
        Exit Sub
    End If

    On Error Goto 0

End Sub


'////////////////////////////////////////////////////////////////////////////
'
'    Class ISATools
'
'    Purpose:    the heart and soul of this beastie
'            contains all the common methods and properties needed by various subs
'            and functions
'
'    Input:    from subs and functions
'
'    Output:    returns properties and method results to calling routines
'
'    ToDo:    depends on functionality added to main Script
'
'////////////////////////////////////////////////////////////////////////////

Class ISATools

    'Script-specific text
    Private Version
    Public ScriptTitle

    'general mesages
    Private ImpExpMsg
    Private OptsErrMsg
    Private QuitMsg

    'File option Msgs
    Private CurrPath
    Private OutFileMsg1
    Private OutFileMsg2
    Private InFileMsg
    Private FileNotFound

    'file option variables
    Private OutFile
    Private InFile

    'destination set information
    Private DsQueryMsg
    Private DsDupMsg
    Private DsErrMsg
    Private Ds_Name
    Private Ds_Descr
    Private NoDsMsg

    'Site & Content Rule info
    Private ScrQueryMsg
    Private ScrDupMsg
    Private ScrErrMsg
    Private Scr_Name
    Private Scr_Descr
    Private NoScrMsg

    'Export XML data
    Private XMLComment

    ' Auth-fix specific messages
    Public AuthOkMsg
    Public RstW3Msg

    'Some useful objects
    Private WshShell
    Private FSO

    '////////////////////////////////////////////////////////////////////////////
    '
    '    Sub Class_Initialize
    '
    '    Purpose:    defines the default state for class properties
    '
    '    Input:    called by the "set Tools = New ISATools" command
    '
    '    Output:    Err.Success or Err.Failure to caller ( intrinsic )
    '
    '    ToDo:    depends on changes in class
    '
    '////////////////////////////////////////////////////////////////////////////

    Private Sub Class_Initialize ( )
        'Create those useful objects
        Set WshShell = CreateObject ( "WScript.Shell" )
        Set FSO = CreateObject ( "Scripting.FileSystemObject" )

        'Script-specific text
        Version        = "2.1"
        ScriptTitle    = "ISA Server Ad import / export tool ver. " & Version

        'General mesages
        ImpExpMsg    = "Do you want to Import or Export ad filter settings?"
        OptsErrMsg    = "Sorry; that's not a valid option"
        QuitMsg         = "Do you want to quit?"

        'Export XML data
        XMLComment    = "You can hand edit this file, but please do not change the format" & _
                    vbCrLf & "as the script depends on the present schema." & _
                    vbCrLf & vbCrLf & "This is a list of ad sites that I've compiled over time." & _
                    vbCrLf & "Feel free to add to it as you please." & _
                    vbCrLf & "So that we can keep things current, please email your additions back to" & _
                    vbCrLf & "jim@isatools.org for posting to my scripting site." & _
                    vbCrLf & vbCrLf & "If you want to hand-edit this, feel free to grab XMLNotepad from" &_
                    vbCrLf & "http://msdn.microsoft.com/library/en-us/dnxml/html/xpsetup.exe"

        'File variable defaults
        CurrPath        = Left ( WScript.ScriptFullName, Len ( WScript.ScriptFullName )-Len ( WScript.ScriptName ) )
        OutFile         = CurrPath & "ISA_Ads.xml"
        InFile        = OutFile

        'File option Msgs
        OutFileMsg1    = "Where do you want to put the export file?"
        OutFileMsg2    = "That file already exists; please choose another file name or path"
        InFileMsg        = "Where is the source file?"
        FileNotFound    = "I can't locate that file; please check the path and re-enter"

        'Ds messages
        DsDupMsg    = "That Destination Set already exists; would you like to create a new one?"
        DsErrMsg        = "Error 0x" & Hex ( Err.Number ) & " was encountered while trying to create the DS." & _
                        vbCrLf & "Would you like to try again?"
        DsQuerymsg    = "What Destination Set would you like to use?"
        NoDsMsg        = "The specified Destination Set was not found; please check your entry."
        Ds_Name        = "NoAds"
        Ds_Descr        = "Ad Blocking Destination Set"

        'Scr messages
        ScrDupMsg    = "That Site & content Rule already exists; would you like to create another?"
        ScrErrMsg    = "Error 0x" & Hex ( Err.Number ) & " was encountered while trying to create the SCR." & _
                        vbCrLf & "Would you like to try again?"
        ScrQuerymsg    = "What would you like to name the new Site & Content Rule?"
        NoScrMsg    = "The specified Site & Content Rule was not found; please check your entry."
        Scr_Name    = Ds_Name
        Scr_Descr    = "Ad Blocking Site & Content Rule"

        AuthOkMsg    = "I need to make a change to the Web Proxy service " & _
                        "to avoid auth popups (http://support.microsoft.com/?id=297324)" & _
                        vbCrLf & "Would you like me to do that for you?"
        RstW3msg    = "You'll need to restart the Web Proxy service to pick up the changes made.. " & _
                            vbCrLf & "Would you like me to do that for you?"

    End Sub


    '////////////////////////////////////////////////////////////////////////////
    '
    '    Sub Class_Terminate
    '
    '    Purpose:    destroys the class and its data
    '
    '    Input:    called by the "set Tools = Nothing" command
    '
    '    Output:    Err.Success or Err.Failure to caller ( intrinsic )
    '
    '    ToDo:    depends on changes in class
    '
    '////////////////////////////////////////////////////////////////////////////

    Private Sub Class_Terminate ( )
        Set WshShell = Nothing
        Set FSO = Nothing
    End Sub


    '////////////////////////////////////////////////////////////////////////////
    '
    '    Class properties
    '
    '    Purpose:    provide access to global data via class
    '
    '    Input:    only for "property Let" actions
    '
    '    Output:    only for "property Get" actions
    '
    '    ToDo:    depends on changes in class
    '
    '////////////////////////////////////////////////////////////////////////////

    'Returns text held in ImpExpMsg variable
    Public Property Get ImpExp
        ImpExp = ImpExpMsg
    End Property

    'Returns text held in OutFile variable
    Public Property Get FileOut
        FileOut = OutFile
    End Property

    'Modifies text held in OutFile variable
    Public Property Let FileOut ( InVal )
        OutFile = InVal
    End Property

    'Returns text held in InFile variable
    Public Property Get FileIn
        FileIn = InFile
    End property

    'Modifies text held in InFile variable
    Public Property Let FileIn ( InVal )
        InFile = InVal
    End Property

    'Returns text held in OutFileMsg1 variable
    Public Property Get DestFileMsg
        DestFileMsg = OutFileMsg1
    End Property

    'Returns text held in OutFileMsg2 variable
    Public Property Get FileExistsMsg
        FileExistsMsg = OutFileMsg2
    End Property

    'Returns text held in InFileMsg variable
    Public Property Get SrcFileMsg
        SrcFileMsg = InFileMsg
    End property

    'Returns text held in FilenotFound variable
    Public Property Get FNFMsg
        FNFMsg = FileNotFound
    End Property

    'Returns text held in OptsErrMsg variable
    Public Property Get OptsErr
        OptsErr = OptsErrMsg
    End Property

    'Returns text held in DsQueryMsg variable
    Public Property Get DsQuery
        DsQuery = DsQueryMsg
    End property

    'Returns text held in NoDsmsg variable
    Public Property Get DsNFMsg
        DsNFMsg = NoDsMsg
    End property

    'Returns text held in DsDupMsg variable
    Public Property Get DsDup
        DsDup = DsDupMsg
    End Property

    'Returns text held in DsErrMsg variable
    Public Property Get DsErr
        DsErr = DsErrMsg
    End Property

    'Returns text held in Ds_Name variable
    Public Property Get DsName
        DsName = Ds_Name
    End Property

    'Modifies text held in Ds_Name variable
    Public Property Let DsName ( InVal )
        Ds_Name = InVal
    End Property

    'Returns text held in Ds_Descr variable
    Public Property Get DsDescr
        DsDescr = Ds_Descr
    End property

    'Returns text held in SrcQueryMsg variable
    Public Property Get ScrQuery
        ScrQuery = ScrQueryMsg
    End property

    'Returns text held in ScrDupMsg variable
    Public Property Get ScrDup
        ScrDup = ScrDupMsg
    End Property

    'Returns text held in ScrErrMsg variable
    Public Property Get ScrErr
        ScrErr = ScrErrMsg
    End Property

    'Returns text held in Scr_Name variable
    Public Property Get ScrName
        ScrName = Scr_Name
    End Property

    'Modifies text held in Scr_Name variable
    Public Property Let ScrName ( InVal )
        Scr_Name = InVal
    End Property

    'Returns text held in Scr_Descr variable
    Public Property Get ScrDescr
        ScrDescr = Scr_Descr
    End property

    'Returns text held in XMLComment variable
    Public Property Get XMLComm
        XMLComm = XMLComment
    End property

    '////////////////////////////////////////////////////////////////////////////
    '
    '    Class Methods
    '
    '    Purpose:    provide common actions via the class
    '
    '    Input:    only as required by each function
    '
    '    Output:    depends on the function
    '
    '    ToDo:    depends on changes in class
    '
    '////////////////////////////////////////////////////////////////////////////

    'Returns status of file existence ( True/False )
    Public Function FindFile ( InVal )
        On Error Resume Next
        FindFile = FSO.GetFile ( InVal )
        If Err Then
            FindFile = False
        Else
            FindFile = True
        End If
        On Error Goto 0
    End Function

    'Returns status of user action when prompted with informational "Msg"
    Public Function ShowInfo ( Msg )
        ShowInfo = WshShell.Popup ( Msg, 2, ScriptTitle, vbInformation + vbOk )
    End Function

    'Returns status of user action when prompted with Error "Msg"
    Public Function ShowErr ( Msg )
        ShowErr = WshShell.Popup ( Msg, 2, ScriptTitle, vbExclamation + vbOk )
    End Function

    'Returns user input when prompted with "Msg" and provided with "Default" answer
    Public Function GetAns ( Msg, Default )
        Dim Answer
        Answer = InputBox ( Msg, ScriptTitle, Default )
        If Answer = "" Then
            If AskYN ( QuitMsg ) Then WScript.Quit
            GetAns Msg, Default
        Else
            GetAns = Answer
        End If
    End Function

    'Returns status of user action ( Yes=True, No=False ) when prompted with "Msg"
    Public Function AskYN ( Msg )
        Select Case WshShell.Popup ( Msg, , ScriptTitle, vbQuestion + vbYesNo )
            Case vbYes: AskYN = TRUE
            Case vbNo: AskYN = FALSE
            Case Else: AskYN = AskYN ( Msg )
        End Select
    End Function

End Class
[/nocode]
Автор: Lovec
Дата сообщения: 02.08.2007 14:44
SPV_Ed
Пробовал запускать калькулятор. Появляются такие строки:
"Calculator.job" (calc.exe)
    Started 01.08.2007 15:44:18
"Calculator.job" (calc.exe)
    Finished 01.08.2007 15:44:19
    Result: The task completed with an exit code of (0).
Вход в систему был осуществлен и задание выполнилось.

"Calculator.job" (calc.exe)
    Started 01.08.2007 15:45:00
"55555.job" (calc.exe)
    Started 02.08.2007 9:20:00

Был осуществлен логаут и задания не выполнились...
Автор: shola
Дата сообщения: 02.08.2007 15:06
У меня проблема с сервера мне нужно 1 раз неделю копировать архивы на 1 из компов в сети. С помошью назначенных заданий я осуществляю архивирование базы на сервер каждый день, вот терь эти архивы еще куда-нить сливать хочу на всякий пожарный. И не могу. Когда новое задание создаю, выбираю CMD.exe прописываю copy куда и откуда, а када выполняю, появляется окошко командной строки и ждет пока команду введу, вот. А хотелось бы чтоб само. Такая проблема, кто-нить знает, что подсказать.
Автор: LeaF_AVF
Дата сообщения: 02.08.2007 15:40
shola
Напиши бат-файл, в к-ром и укажи последовательность команд копирования. Его (этот файл) и подсунь планировщику..
Хотя я бы предпочел связку nnCron+nnBackup... Для твоей задачи - самое оно...
Автор: Oldster
Дата сообщения: 03.08.2007 06:52
Sid Salmon
есть еще что полистать на тему ISA? скрипты и т.д.
Автор: halfman
Дата сообщения: 03.08.2007 07:53

Цитата:
Напиши бат-файл, в к-ром и укажи последовательность команд копирования. Его (этот файл) и подсунь планировщику..
Хотя я бы предпочел связку nnCron+nnBackup... Для твоей задачи - самое оно...

Присоединяюсь. Только не забудьте запускать nnBackup от имени какого-н пользователя. Пользователь System не имеет доступа к сети.
Автор: SPV_Ed
Дата сообщения: 03.08.2007 08:18
shola
Самый простой способ:
Подключите сетевую шару как сетевой диск

Код: net use x: \\backup\share
Автор: Stranger2000
Дата сообщения: 03.08.2007 08:42
=========Звиняйте за длину, есть такой крипт (см ниже), который всякому входящему в домен прописывает дефраг всех дисков (втч и CD\DVD)
Собственно, сам я скриптовать в vbs пошти нимагу, и этот скрипт для меня почти как темный лес. обнаружил, что время старта задачи все время разное и то, что он все дисковые устройства бросает - по задаче на диск...

приблуда, ИМХО, полезная, но хотелось бы, чтобы диски проставлялись только локальные и чтобы на одно и то же время. Гляньте, пожалста, акулы скриптографии

'автоматом загоняет дефраг дисковых устройств в планировщик. на рандомное время, сцуко такое!!!
Option Explicit
Dim oNet, objWMIService, objFSO, Drives, Drive, atstatus, starttime

Set oNet = CreateObject("WScript.Network")

If not LCase(oNet.ComputerName) = LCase("Server-trade") Then
    Set objWMIService = GetObject("winmgmts:\\" & oNet.ComputerName & "\root\CIMV2")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set Drives = objFSO.Drives
    For Each drive In Drives
        If Drive.DriveType = 2 Then
            atstatus = chkStat(Drive.DriveLetter)
            If atstatus = 0 Then
                starttime = randomTime
                setatjob Drive.DriveLetter, starttime
            Else
            End If
        Else
        End If
    Next
Else
End If



'************************
Function setatjob(Drive, startTime)
'************************
Dim objShare, objInParam

Set objShare = objWMIService.Get("Win32_ScheduledJob")
Set objInParam = objShare.Methods_("Create").inParameters.SpawnInstance_()
objInParam.Properties_.Item("Command") = "defrag " & Drive & ": -f -v"
objInParam.Properties_.Item("DaysOfWeek") = "16"
objInParam.Properties_.Item("InteractWithDesktop") = False
objInParam.Properties_.Item("RunRepeatedly") = True
objInParam.Properties_.Item("StartTime") = "********" & startTime & "0000.000000+660"
Set setAtJob = objWMIService.ExecMethod("Win32_ScheduledJob", "Create", objInParam)
    
End Function
'************************



'************************
Function chkStat(Drive)
'************************
Dim status, objItem, colItems

status = 0
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ScheduledJob")
For Each objItem in colItems
    If (objItem.Command = "defrag " & Drive & ": -f -v") Then
        status = status + 1
    Else
        status = status + 0
    End If
Next
chkStat = status     

End Function
'************************

'************************
Function randomTime()
randomize
randomTime = int (17 * rND)
If (randomTime < 9) Then
    randomTime = randomTime + 9    
End If
If (randomTime > 17) Then
    If (randomTime-17 > 9) Then
        randomTime = randomTime - 17    
    Else
        randomTime = randomTime - 8    
    End If
End If
If randomTime < 10 Then
    randomTime = "0" & randomTime
End If

End Function
'************************
Автор: Red_Line_ST
Дата сообщения: 03.08.2007 10:15
привет всем. может кто поможет. нужен скриптик для перезагрузки Win 2003 по расписанию. дело в тмо что проблемы какие-то непонятные с VPNтунелем в ISA Server.. Коннект двух точек есть, но вот после ночи пинги пропадают и с утра люди не могут работать. хочу пока не разобрался, сделать чтобы комп с утра перегружался ... все соедиения автоматом поднимаются.. поэтому нужна прост оперегрузка
Автор: valhalla
Дата сообщения: 03.08.2007 12:56
Red_Line_ST
В Resource Kit есть shutdown
Также есть еще одна утилита, более функциональная.
Автор: Victor_Dobrov
Дата сообщения: 07.08.2007 05:51
Для проверки минимальных системных требований сделал скрипт SysInfo.vbs, сохраняющий в ini-файл инфу о системе. Значения из ini-файла сравниваю с заданными. Работает на XP рус, XP64 English.
Просьба к тем, у кого есть Windows Vista: Проверьте, скрипт работает (отпишите в личку)?
Автор: BULLDOG
Дата сообщения: 07.08.2007 13:50
Народ. Как в VBS определтить OU залогиневшегося пользователя в AD? Очень нужно.
Автор: Etalon
Дата сообщения: 07.08.2007 20:12
BULLDOG

Код:
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set objUser = GetObject _
("LDAP://cn=" & WshNetwork.UserName & ",dc=" & WshNetwork.UserDomain)
Автор: Oldster
Дата сообщения: 08.08.2007 07:04
Господа, есть трабла, которую не могу решить. Вот что надо:
банально просто - печатать *.pdf файла, но:
1) чтоб это было автоматом (типа cmd с указанием пути до печатаеваемого файла)
2) все pdf имеют формат А3, а надо печать на А4, т.е. чтоб еще и маштабировалось.
я написал скрипт на AutoIT (сам с ним не знаком, пришлось разбиратся), который все делает, НО не разобрался, как заставить его поменять в свойсвах печати изменения форматов.
вот сам скрипт:[more]$file = $CmdLine[1]
Run("C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe " & $file)

$array = StringSplit($file, '\', 1)

WinWaitActive("Adobe Reader - [" & $array[$array[0]] & "]")
Send("^p")
WinWaitActive("Печать")
Send("{ENTER}")
WinWaitActive("Adobe Reader - [" & $array[$array[0]] & "]")
WinClose("Adobe Reader - [" & $array[$array[0]] & "]")
[/more]
Если есть другой способ - готов его рассмотреть.
Автор: BULLDOG
Дата сообщения: 08.08.2007 11:04
Etalon
Спасибо. Но здесь есть CN и DC, а вот OU как раз нет. Меня интересует все-таки OU. У меня много OU, в этом вся проблема. Можно написать универсальный скрипт для всего домена, а можно для каждой OU. Пока я не научюсь определять OU, придется создавать групповую политику для каждой OU и изменять скрипт, подсталяя нужное название OU. Дибильное занятие.
Автор: alecsandrb
Дата сообщения: 08.08.2007 11:15
BULLDOG

Мне когда-то посоветовали определять следующим образом
[more]
' определение текущего UserName
' Этот вариант проходит для Windows 2000/XP и выше
Set WshShell = CreateObject("Wscript.Shell")
UserName = WshShell.ExpandEnvironmentStrings("%username%")

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

' Запрос информации по учетной записи пользователя
CommandText = "Select cn, name, distinguishedName, canonicalName, sAMAccountName"
CommandText = CommandText + " from 'LDAP://DC=dom1,DC=dom2'"
CommandText = CommandText + " where sAMAccountName='" + UserName + "'"

Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection

If Not objRecordset.EOF Then
' Если запись для этого пользователя найдена то
' Процедура обработки distinguishedName или canonicalName
End If

В последнем IF--END IF размещается процедура формирования пути исходя из distinguishedName или canonicalName.

1. distinguishedName выглядит следующим образом
"CN=Ivanov Petr,OU=Managers,OU=Firm,DC=dom1,DC=dom2"
и путь вычисляется таким образом

dn = objRecordset.fields("distinguishedName").Value
myArray = Split(dn, ",")
Path = ""
For Each rec In myArray
If Left(rec, 3) = "OU=" Then
Path = Mid(rec, 4) + "\" + Path
End If
Next

получается путь в виде "Firm\Managers\"

2. canonicalName выглядит следующим образом
"dom1.dom2/Firm/Managers/Ivanov Petr"
как видишь, здесь вообще достаточно заменить "/" на "\" и вырезать имя домена, подставив на его место твои " \\domain\shared dir"
[/more]
Автор: BULLDOG
Дата сообщения: 08.08.2007 14:13
alecsandrb
Ругается на эту строку

objRecordset.Open CommandText, objConnection

Строка: 16
Символ: 1
Ошибка: Таблица не существует
Код: 80040Е37
Источник: Provider
Автор: rossel
Дата сообщения: 09.08.2007 03:55
Подскажите как сделать или где проскакивало решение ПЛЗ!!!
Миграция с одного домена на другой. Раб.станции перевести в рабочую группу, потом включить в новый домен. Все права есть.
Моя задача перевести компы на 2х складах, т.е. прямое общение с писюками. Читал что перевод можно сделать с ADMT - AD Migration Tool, но ко мне это не относится.
Подскажите Плиз

Коммент на август 09
За неимением скрипта - пройдет ли такой вариант.
Reset компов в ADUC (AD Users and Computers), только тех что должн перевести.
Подключить к новому доменy. Вот здесь и начинается марафон - надо или сделать все руками на каждом ПС или закопировать какой-никакой скрипт. Опять же наверное с одного места не получится это делать, т.к. ПСки отключены от старого домена т.е надо марафоном пробежать и скрипт (если таковой найдется) запускать?

Знатоки помогите PLS!
Автор: alecsandrb
Дата сообщения: 09.08.2007 05:17
BULLDOG

Я привел пример, который мне в свою очередь давали в прошлом.
Судя по ошибке ты забыл поменять на свои данные строку
где описывается обращение к домену:
DC=dom1,DC=dom2 - поменяй на свои данные,
т.е. если у тебя домен ru.home.com, то должна быть строка - DC=ru,DC=home,DC=com

CommandText = "Select cn, name, distinguishedName, canonicalName, sAMAccountName"
CommandText = CommandText + " from 'LDAP://DC=dom1,DC=dom2'"
CommandText = CommandText + " where sAMAccountName='" + UserName + "'"
Автор: BULLDOG
Дата сообщения: 09.08.2007 08:21
alecsandrb
Ты меня опередил. Сам дукарк, забыл поменять DOM1,DOM2. Скрипт сработал без ошибок.

Добавлено:
alecsandrb
Etalon

Спасибо за помощь, я нашел что хотел!!!
Автор: Timka
Дата сообщения: 10.08.2007 21:19
Message Box (MsgBox 2.1) выводит сообщение/вопрос (в т.ч. из файла!) с возможностью указания таймаута:
Цитата:
MsgBox 2.1 - Batch file messagebox utility by Doug Good
Freeware copyright 2002 Outside The Box Software (http://www.otbsw.com)
Usage: msgbox ("message") ["title"] [Icon] [Buttons] [Timeout]
Always put message and title text in quotes!
To load message from a text file use this syntax:
msgbox @c:\msgfile.txt ["title"] [Icon] [Buttons] [Timeout]
Valid Icon Values: 1 = Information (i) (default)
2 = Warning (!)
3 = Question (?)
4 = Stop (X)
Valid Button Values: 1 = OK (default)
2 = OK, CANCEL
3 = YES, NO
4 = YES, NO, CANCEL
5 = RETRY, CANCEL
6 = ABORT, RETRY, IGNORE
Return Values: 1 = OK button clicked
2 = CANCEL button clicked
3 = ABORT button clicked
4 = RETRY button clicked
5 = IGNORE button clicked
6 = YES button clicked
7 = NO button clicked
Timeout Values: n = number of seconds to wait before
closing the message box.
0 = no timeout (default)

Есть ли похожая утилита (обязательно с таймаутом), понимающая текстовые константы (числа во всех параметрах уж больно не информативны)?

(с) Семён Семеныч Горбунков: У а Вас такая же, только с перламутровыми пуговицами, есть?
Автор: royt
Дата сообщения: 11.08.2007 18:02
Подскажите, как из командной строки (без GUI) изменить имя рабочей группы, в которую должна входить рабочая станция (Windows XP)?
Нужно указать именно рабочую группу, не домен.
Автор: vu1tur
Дата сообщения: 11.08.2007 18:37
royt
wmic computersystem where name="%computername%" call joindomainorworkgroup name="new_workgroup_name"
Автор: royt
Дата сообщения: 11.08.2007 19:04
vu1tur
спасибо!

и еще вот такое решение нашел (подключает компьютер именно к рабочей группе, не к домену), это готовый текст bat-файла:[more]
Код: Const JOIN_WORKGROUP = 0
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144

strDomain = ""
if WScript.Arguments.Count > 0 then
strDomain = WScript.Arguments(0)
else
WScript.Quit
end if

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName

Set objComputer = _
GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" _
& strComputer & "'")

' ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, NULL, NULL, NULL, JOIN_DOMAIN + ACCT_CREATE)

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, NULL, NULL, NULL, JOIN_WORKGROUP)
Автор: Locky_MS
Дата сообщения: 13.08.2007 12:33
Привет. Подскажите почему на удаленном компьютере не определяется имя залогинившегося пользователя (выдает NULL). А если на удаленном компьютере залогинен администратор, то все нормально.


Код: strComputer = "CompName"
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 user: " & objComputer.UserName
Next
Автор: yazzi
Дата сообщения: 14.08.2007 17:45
Не подскажете почему может возникать следующая ошибка: "Объект не поддерживает это свойство или метод : ' objDocument.all.selSoftware' ". хотя все прописанои в форме и в скрипте.

strSoftware = objDocument.all.selSoftware.Value
Автор: mozers
Дата сообщения: 14.08.2007 19:33
yazzi
Спасибо за вопрос
А я все думал, думал с кем бы мне своей прогой поделиться
Те, кто пользуют только WSH и WMI в чистом виде прошу не напрягаться.
Прога (он же скрипт) показывает все методы, свойства и их значения объекта window (т.е. Вашей HTML странички с формами).
Короче - Object Browser.
Автор: YNY
Дата сообщения: 16.08.2007 09:09
gap5
вообще то чтоб узнать выполняется задание с ошибкой или нет то надо посм лог вып задания а чтоб выполнялось точно то надо указать правильную учетку и все будет работать

Добавлено:
Есть ли похожая утилита (обязательно с таймаутом),
WshShell.Popup(.....)

Добавлено:
yazzi где основной файл кот << Прога (он же скрипт) показывает все методы>> ???


Добавлено:
точней вопрос к mozers ).

а по поводу ошибки (слишком мало инфы в вопросе, но): есть прикол в том, что на VBScript и на JScript одни и те же примочки несколько по разному работают, а вообще то, если тебе надо получить из поля формы значение то:
<form id=frm1>
<input id=R name="R" type=text maxLength=36 size=36>
...
</form>

в (VB) скрипте:

frm1.R.value="Ivttr"
или
аа=frm1.R.value

Есть и еше одна возможность: неверный синтаксис, т.е. где нить лиший или не недостает чего нить

Добавлено:
и на кой те objDocument?) Конкретней надо быть, а ты в самую верхушку полез - вот и ошибки

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

Предыдущая тема: BackUp Win2003Serer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.