タグ
  ANSI (1)
  ASP.NET (10)
  Active Directory (55)
  BAT (16)
  Backup (2)
  CSharp (11)
  CentOS (4)
  C言語 (4)
  DNS (4)
  Excel (3)
  FFmpeg (1)
  Fedora (4)
  FreeBSD (6)
  IPv6 (3)
  Java (11)
  JavaScript (8)
  LAN (1)
  Link (4)
  Linux (15)
  Mac (1)
  Mail (2)
  Microsoft (3)
  NIS (1)
  Node.js (6)
  OpenIndiana (1)
  OpenLDAP (2)
  OpenSSL (1)
  OpenSolaris (4)
  PHP (2)
  Perl (2)
  Postfix (1)
  PostgreSQL (2)
  PowerShell (34)
  RFC (3)
  SQL Server (5)
  Solaris (10)
  Ubuntu (9)
  VBScript (73)
  VCpp (2)
  VMware (3)
  Visual Basic (1)
  WMI (17)
  WSF (5)
  WSH (10)
  Windows (19)
  bash (1)
  bind (1)
  iSCSI (1)
  おまけ (3)
  作成中 (8)
  慣用句 (3)
  正規表現 (6)
  運用 (8)
作成 2010.01.07
更新 2010.01.07
VBScript で Active Directory ユーザーのCNを変更2
キモは MoveHere です。 CN の変更に合わせて、追随的に変更するコードです。
Option Explicit
Const OldName = "usertest01"
Const NewName = "usertest001"
Dim WshShell, strEnvDnsDomain, arrItem
Dim baseDN, objRootDSE
Dim objConnection, objCommand, strCommandText
Dim objRecordSet, strUserDN
Dim objUser, objPOU, objNewUser
Dim i
baseDN = ""

' DNSドメインを取得しbaseDNを設定
Set WshShell = CreateObject("WScript.Shell")
strEnvDnsDomain = WshShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")
strEnvDnsDomain = LCase(strEnvDnsDomain)
If Left(strEnvDnsDomain, 1) = "%" Then
  WScript.Echo "操作しているPCはActive Directoryドメインに参加していないようです。" & vbNewLine & _
		"終了します。"
  WScript.Quit
End If
arrItem = Split(strEnvDnsDomain, ".")
baseDN = ""
For i = 0 to UBound(arrItem)
  If i = 0 Then
    baseDN = "DC=" & arrItem(i)
  Else
    baseDN = baseDN & ",DC=" & arrItem(i)
  End If
Next

' DCに接続して検索
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
strCommandText = "<LDAP://" & baseDN & ">;" & _
	"(&(objectClass=user)(sAMAccountName=" & OldName & "));" & _
	"distinguishedName;" & _
	"subtree"
objCommand.CommandText = strCommandText
Set objRecordSet = objCommand.Execute

' 設定変更
If objRecordset.EOF Then
  strUserDN = "ログオンアカウント " & OldName & " は見つかりませんでした。"
Else
  strUserDN = objRecordset.Fields("distinguishedName")
  Set objUser = GetObject("LDAP://" & strUserDN)
  Set objPOU = GetObject(objUser.Parent)
  Set objNewUser = objPOU.MoveHere(objUser.ADsPath, "CN=" & NewName)
  objNewUser.GetInfo
  objNewUser.Put "sAMAccountName", NewName
  objNewUser.Put "userPrincipalName", NewName & "@" & strEnvDnsDomain
  objNewUser.Put "sn", NewName
  objNewUser.Put "displayName", NewName
  objNewUser.SetInfo
  WScript.Echo objNewUser.ADsPath
End If
WScript.Echo "END"
objConnection.Close
Set objCommand = Nothing
参考

VBScript で Active Directory ユーザーのCNを変更 | IADsContainer インターフェース | IADsUser インターフェース

[リロード] [記事修正] [新規作成] [使用方法]
©2004-2012 UPKEN IPv4