2016-09-09 1 views
0

J'ai un script HTA pour la récupération d'informations sur les membres du groupe. Je viens de commencer à apprendre HTA et essayé de mon mieux de modifier pour adapter mon exigenceHTA to Script pour parcourir le nom du groupe de sécurité AD et obtenir le chemin LDAP

Mes Scripts fait le ci-dessous:

J'ai une unité d'organisation statique nommée OU = MyDepartment, DC = org, DC = dev, DC = lab, DC = net

Et tous les groupes AD requis/ciblés seront situés dans l'unité d'organisation ci-dessus appelée MyDepartment. A partir du script HTA, je peux sélectionner le nom du groupe AD requis. Lorsque j'exécute le fichier HTA, l'attribut "adminDescription" est mis à jour dans Active Directory à l'aide de quelque chose que j'ai codé en dur dans le script, et cela fonctionne. Cependant, je cherche à mettre à jour basé sur la valeur de boîte de texte que l'utilisateur peut entrer une valeur.

Dans le script ci-dessous, les lignes s'exécutent pour mettre à jour l'attribut AD requis, c'est-à-dire "adminDescription" à "Scientist021".

Const ADS_PROPERTY_UPDATE = 2 
Set objGroup = GetObject("LDAP://" & lst_groupfilter.Value) 
objGroup.Put "adminDescription", "Scientist021" 
objGroup.SetInfo 

Actuellement, j'ai configuré pour mettre à jour cette valeur lorsque cliquez sur le bouton Obtenir membres (je voulais même Renommez-le nom du bouton « UpdateValues ​​».

Je coincé à cet endroit, je voulais mettre valeur « Scientist021 » ou quoi que dans le texte utilisateur peut taper dans une zone de texte quelqu'un peut-il me guider dans cette s'il vous plaît. script peut être téléchargé à partir here.

See this photo..if my English is poor

<Html> 
<Head> 
<Title>Set Group AdminDescription</Title> 
<HTA:Application 
    Caption = Yes 
    Border = Thick 
    ShowInTaskBar = Yes 
    SingleInstance = Yes 
    MaximizeButton = Yes 
    MinimizeButton = Yes> 
<script Language = VBScript> 
Const ADS_PROPERTY_UPDATE = 2 
Sub Window_OnLoad 
    intWidth = 800 
    intHeight = 600 

    Me.ResizeTo intWidth, intHeight 
    Me.MoveTo ((Screen.Width/2) - (intWidth/2)),((Screen.Height/2) - (intHeight/2)) 

    lst_members.Style.Width = 500 

    'Set objRootDSE = GetObject("LDAP://RootDSE") 
    Set objRootDSE = GetObject("LDAP://OU=MyDepartment,DC=org,DC=dev,DC=lab,DC=net") 

    strBaseConnString = objRootDSE.Get("distinguishedName") 

    Set objOULevel = GetObject("LDAP://" & strBaseConnString) 

    EnumerateGroups strBaseConnString 

    Show_Group_Selection 
End Sub 

Sub EnumerateGroups(strDNSDomain) 
    Const ADS_SCOPE_SUBTREE = 2 
    Const adVarChar = 200 
    Const MaxCharacters = 255 

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

    objCommand.Properties("Page Size") = 1000 
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
    objCommand.CommandText = "SELECT Name, distinguishedName FROM 'LDAP://" & strDNSDomain & "' WHERE objectClass='group'" 

    Set objRecordSet = objCommand.Execute 

    Set objDataList = CreateObject("ADOR.Recordset") 
    objDataList.Fields.Append "name", adVarChar, MaxCharacters 
    objDataList.Fields.Append "distinguishedName", adVarChar, MaxCharacters 
    objDataList.Open 

    While Not objRecordSet.EOF 
     objDataList.AddNew 
     objDataList("name") = objRecordSet.Fields("name").Value 
     objDataList("distinguishedName") = objRecordSet.Fields("distinguishedName").Value 
     objDataList.Update 

     objRecordSet.MoveNext 
    Wend 

    objRecordSet.Close 

    objDataList.Sort = "name" 

    objDataList.MoveFirst 

    While Not objDataList.EOF 
     Set objActiveOption = Document.CreateElement("OPTION") 
     objActiveOption.Text = objDataList.Fields("name").Value 
     objActiveOption.Value = objDataList.Fields("distinguishedName").Value 
     lst_GroupFilter.Add objActiveOption 

     objDataList.MoveNext 
    Wend 

    objDataList.Close 
    End Sub 

    Sub Show_Group_Selection 
     span_GroupFilter.InnerHTML = lst_GroupFilter.Value 
    End Sub 

    Sub Default_Buttons 
     If Window.Event.KeyCode = 13 Then 
      btn_run.Click 
     End If 
    End Sub 

    Sub Exit_HTA 
     Window.Close 
    End Sub 

Sub Get_Members 
    'Const adVarChar = 200 
    'Const MaxCharacters = 255 
    Const ADS_PROPERTY_UPDATE = 2 

    Set objGroup = GetObject("LDAP://" & lst_groupfilter.Value) 
    objGroup.Put "adminDescription", "Scientist021" 
    objGroup.SetInfo 

    'Clear_Members 
    'Set objGroup = GetObject("LDAP://" & lst_groupfilter.Value) 
    'Set objDataList = CreateObject("ADOR.Recordset") 
    'objDataList.Fields.Append "name", adVarChar, MaxCharacters 
    'objDataList.Fields.Append "distinguishedName", adVarChar, MaxCharacters 
    'objDataList.Open 
    'For Each objObject In objGroup.Members 
    ' objDataList.AddNew 
    ' objDataList("name") = objObject.cn 
    ' objDataList("distinguishedName") = objObject.distinguishedName 
    ' objDataList.Update 
    'Next 
    'objDataList.Sort = "name" 
    'If Not objDataList.BOF Then objDataList.MoveFirst 
    'While Not objDataList.EOF 
    ' Set objMember = Document.CreateElement("OPTION") 
    ' objMember.Text = objDataList.Fields("name").Value 
    ' objMember.Value = objDataList.Fields("distinguishedName").Value 
    ' lst_members.Add objMember 
    ' objDataList.MoveNext 
    'Wend 
    'objDataList.Close 
    End Sub 

    Sub ExporT_To_TXT 
     If Mid(document.location, 6, 3) = "///" Then 
      strHTAPath = Mid(Replace(Replace(document.location, "%20", " "), "/", "\"), 9) 
     Else 
      strHTAPath = Mid(Replace(Replace(document.location, "%20", " "), "/", "\"), 6) 
     End If 

     strFileName = Left(strHTAPath, InStrRev(strHTAPath, "\")) & lst_GroupFilter.Item(lst_GroupFilter.SelectedIndex).Text & ".txt" 
     strFileName = InputBox("Enter file name to save as:", "Save As", strFileName) 

     If strFileName <> "" Then 
      Set objFSO = CreateObject("Scripting.FileSystemObject") 
      Set objFile = objFSO.CreateTextFile(strFileName, True) 

      objFile.WriteLine "Group Distinguished Name: " & lst_groupfilter.Value 

      For Each objOption In lst_members 
       objFile.WriteLine objOption.Text 
      Next 

      objFile.Close 

      MsgBox "File saved." 
     End If 
End Sub 
</script> 

<body style="background-color:#B0C4DE;" onkeypress='vbs:Default_Buttons'> 
<table height="90%" width= "90%" border="0" align="center"> 
    <tr> 
     <td align="center" colspan="2"> 
      <h2>Set Group AdminDescription</h2> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <b>Group Filter:</b> 
     </td> 
     <td> 
      <select size='1' name='lst_GroupFilter' onChange='vbs:Show_Group_Selection'> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td colspan=2> 
      <b>Group Selected:</b>&nbsp&nbsp&nbsp<span id='span_GroupFilter'></span> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <b>Members:</b> 
     </td> 
     <td> 
      <select size='8' name='lst_members'> 
      </select> 
     </td> 
    </tr> 
</table> 
<table width= "90%" border="0" align="center"> 
    <tr align="center"> 
     <td> 
      <button name="btn_run" id="btn_run" accessKey="G" onclick="vbs:Get_Members"><u>G</u>et Members</button> 
     </td> 
     <td> 
      <button name="btn_export" id="btn_export" accessKey="E" onclick="vbs:Export_To_TXT"><u>E</u>xport to TXT</button> 
     </td> 
     <td> 
      <button name="btn_exit" id="btn_exit" accessKey="x" onclick="vbs:Exit_HTA">E<u>x</u>it</button> 
     </td> 
    </tr> 
</table> 
</body> 
</head> 
</html> 

Répondre

0

Vous devriez juste être en mesure d'ajouter une zone de texte (pas un menu déroulant de sélection).

<input type=text id="userInput"> 

Ensuite, mettre la valeur de cette case dans la description

objGroup.Put "adminDescription", userInput.value 

Vous voulez juste vous assurer de faire la validation dans le texte dans cette case (pas vide, pas trop longtemps, etc.).