2016-09-09 15 views
0

グループメンバーシップ情報取得のためのHTAスクリプトがあります。私は= OU = MyDepartment、DC = ORG、DC = DEV、DC名前付き静的OUを持ってHTAをスクリプト化してADセキュリティグループ名を参照し、LDAPパスを取得する

:私はちょうど下記んHTAを学習し始め、私の要件

私のスクリプトに合わせて修正するために私の最善を試してみましたラボ、DC =ネット

すべての必須/対象ADグループは、MyDepartmentというOUの上に配置されます。

HTAスクリプトから、必要なADグループ名を選択できます。

私はHTAファイルを実行すると、Active Directory内の "adminDescription"属性をスクリプト内でハードコードされたものに更新し、動作します。ただし、ユーザーが値を入力できるテキストボックスの値に基づいて更新を検討しています。

以下のスクリプトでは、必要なAD属性「adminDescription」を「Scientist021」に更新するために実行されています。

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

現在、私はメンバーのボタンを取得する上でのクリックは(私も「UpdateValues」のボタン名にこの名前を変更したい場合は、この値を更新するように構成されている。私はこの場所で立ち往生

、私は入れたかったです値「Scientist021」として、またはどんなユーザーがテキストボックスを入力できるテキストに 誰が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> 

答えて

0

(ドロップダウンリストではなく)テキストボックスを追加するだけでよいはずです。

<input type=text id="userInput"> 

、あなたはこのボックス(長すぎる、空ではないではない、などのテキストでの検証を行うことを確認するためにだけたいと思うの説明では、このボックスから

objGroup.Put "adminDescription", userInput.value 

を価値を置きます)。

関連する問題