Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    8

    VBScript Creazione Utenti tramite File Excel

    Ciao a tutti! Ho questo VBScript che mi crea gli Utenti tramite un file excel specificando il TerminalServicesHomeDirectory e il TerminalServicesProfilePath (vedi riga 124-126), che però mi da come Errore: "Unable to create user with cn: <nomeUtente>" (vedi riga 86)
    Qualcuno mi può aiutare? Grazie mille!

    VBScript

    codice:
    Option Explicit
    
    Dim objExcel, strExcelPath, objSheet
    Dim strLast, strFirst, strMiddle, strPW, intRow, intCol
    Dim strGroupDN, objUser, objGroup, objContainer
    Dim strCN, strNTName, strContainerDN
    Dim strHomeFolder, strHomeDrive, objFSO, objShell, strHomeFolderProfile
    Dim intRunError, strNetBIOSDomain, strDNSDomain
    Dim objRootDSE, objTrans, strLogonScript, strUPN
    
    ' Constants for the NameTranslate object.
    Const ADS_NAME_INITTYPE_GC = 3
    Const ADS_NAME_TYPE_NT4 = 3
    Const ADS_NAME_TYPE_1779 = 1
    
    ' Specify spreadsheet.
    strExcelPath = "c:\Utenti\Utenti.xls"
    
    ' Specify DN of container where users created.
    strContainerDN = "ou=Utenti, dc=FideFior"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Wscript.Shell")
    
    ' Determine DNS domain name from RootDSE object.
    Set objRootDSE = GetObject("LDAP://RootDSE")
    strDNSDomain = objRootDSE.Get("DefaultNamingContext")
    
    ' Use the NameTranslate object to find the NetBIOS domain name
    ' from the DNS domain name.
    Set objTrans = CreateObject("NameTranslate")
    objTrans.Init ADS_NAME_INITTYPE_GC, ""
    objTrans.Set ADS_NAME_TYPE_1779, strDNSDomain
    strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
    ' Remove trailing backslash.
    strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
    
    ' Open spreadsheet.
    Set objExcel = CreateObject("Excel.Application")
    
    On Error Resume Next
    objExcel.Workbooks.Open strExcelPath
    If Err.Number <> 0 Then
      On Error GoTo 0
      Wscript.Echo "Unable to open spreadsheet " & strExcelPath
      Wscript.Quit
    End If
    On Error GoTo 0
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
    
    ' Bind to container where users to be created.
    On Error Resume Next
    Set objContainer = GetObject("LDAP://" & strContainerDN)
    If Err.Number <> 0 Then
      On Error GoTo 0
      Wscript.Echo "Unable to bind to container: " & strContainerDN
      Wscript.Quit
    End If
    On Error GoTo 0
    
    ' Start with row 2 of spreadsheet.
    ' Assume first row has column headings.
    intRow = 2
    
    ' Read each row of spreadsheet until a blank value
    ' encountered in column 5 (the column for cn).
    ' For each row, create user and set attribute values.
    Do While objSheet.Cells(intRow, 5).Value <> ""
      ' Read values from spreadsheet for this user.
      strFirst = Trim(objSheet.Cells(intRow, 1).Value)
      strMiddle = Trim(objSheet.Cells(intRow, 2).Value)
      strLast = Trim(objSheet.Cells(intRow, 3).Value)
      strPW = Trim(objSheet.Cells(intRow, 4).Value)
      strCN = Trim(objSheet.Cells(intRow, 5).Value)
      strNTName = Trim(objSheet.Cells(intRow, 6).Value)
      strUPN = Trim(objSheet.Cells(intRow, 7).Value)
      strHomeFolder = Trim(objSheet.Cells(intRow, 8).Value)
      strHomeDrive = Trim(objSheet.Cells(intRow, 9).Value)
      strHomeFolderProfile = Trim(objSheet.Cells(intRow, 10).Value)
      strLogonScript = Trim(objSheet.Cells(intRow, 11).Value)
      ' Create user object.
      On Error Resume Next
      Set objUser = objContainer.Create("user", "cn=" & strCN)
      If Err.Number <> 0 Then
        On Error GoTo 0
        Wscript.Echo "Unable to create user with cn: " & strCN
      Else
        On Error GoTo 0
        ' Assign mandatory attributes and save user object.
        If strNTName = "" Then
          strNTName = strCN
        End If
        objUser.sAMAccountName = strNTName
        On Error Resume Next
        objUser.SetInfo
        If Err.Number <> 0 Then
          On Error GoTo 0
          Wscript.Echo "Unable to create user with NT name: " & strNTName
        Else
          ' Set password for user.
          objUser.SetPassword strPW
          If Err.Number <> 0 Then
            On Error GoTo 0
            Wscript.Echo "Unable to set password for user " & strNTName
          End If
          On Error GoTo 0
          ' Enable the user account.
          objUser.AccountDisabled = False
          If strFirst <> "" Then
            objUser.givenName = strFirst
          End If
          ' Assign values to remaining attributes.
          If strMiddle <> "" Then
            objUser.initials = strMiddle
          End If
          If strLast <> "" Then
            objUser.sn = strLast
          End If
          If strUPN <> "" Then
            objUser.userPrincipalName = strUPN
          End If
          
          If strHomeFolder <> "" Then
            objUser.TerminalServicesHomeDirectory = strHomeFolder
          End If
           If strHomeFolderProfile <> "" Then
            objUser.TerminalServicesProfilePath = strHomeFolderProfile
          End If
          If strLogonScript <> "" Then
            objUser.scriptPath = strLogonScript
          End If
          ' Set password expired. Must be changed on next logon.
          objUser.pwdLastSet = 0
          ' Save changes.
          On Error Resume Next
          objUser.SetInfo
          If Err.Number <> 0 Then
            On Error GoTo 0
            Wscript.Echo "Unable to set attributes for user with NT name: " _
              & strNTName
          End If
          On Error GoTo 0
          ' Create home folder.
          If strHomeFolder <> "" Then
            If Not objFSO.FolderExists(strHomeFolder) Then
              On Error Resume Next
              objFSO.CreateFolder strHomeFolder
              If Err.Number <> 0 Then
                On Error GoTo 0
                Wscript.Echo "Unable to create home folder: " & strHomeFolder
              End If
              On Error GoTo 0
            End If
            If objFSO.FolderExists(strHomeFolder) Then
              ' Assign user permission to home folder.
              intRunError = objShell.Run("%COMSPEC% /c Echo Y| cacls " _
                & strHomeFolder & " /T /E /C /G " & strNetBIOSDomain _
                & "\" & strNTName & ":F", 2, True)
              If intRunError <> 0 Then
                Wscript.Echo "Error assigning permissions for user " _
                  & strNTName & " to home folder " & strHomeFolder
              End If
            End If
          End If
            ' Create home folder Profile
          If strHomeFolderProfile <> "" Then
            If Not objFSO.FolderExists(strHomeFolder) Then
              On Error Resume Next
              objFSO.CreateFolder strHomeFolderProfile
              If Err.Number <> 0 Then
                On Error GoTo 0
                Wscript.Echo "Unable to create home folder Profile: " & strHomeFolderProfile
              End If
              On Error GoTo 0
            End If
          End If
          ' Group DN's start in column 11.
          intCol = 11
          Do While objSheet.Cells(intRow, intCol).Value <> ""
            strGroupDN = Trim(objSheet.Cells(intRow, intCol).Value)
            On Error Resume Next
            Set objGroup = GetObject("LDAP://" & strGroupDN)
            If Err.Number <> 0 Then
              On Error GoTo 0
              Wscript.Echo "Unable to bind to group " & strGroupDN
            Else
              objGroup.Add objUser.AdsPath
              If Err.Number <> 0 Then
                On Error GoTo 0
                Wscript.Echo "Unable to add user " & strNTName _
                  & " to group " & strGroupDN
              End If
            End If
            On Error GoTo 0
            ' Increment to next group DN.
            intCol = intCol + 1
          Loop
        End If
      End If
      ' Increment to next user.
      intRow = intRow + 1
    Loop
    
    Wscript.Echo "Done"
    
    ' Clean up.
    objExcel.ActiveWorkbook.Close
    objExcel.Application.Quit
    Set objUser = Nothing
    Set objGroup = Nothing
    Set objContainer = Nothing
    Set objSheet = Nothing
    Set objExcel = Nothing
    Set objFSO = Nothing
    Set objShell = Nothing
    Set objTrans = Nothing
    Set objRootDSE = Nothing

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Spostato

    Su ASP c'e' maggiore dimestichezza con il linguaggio... l'alternativa era VB in Programmazione
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.