SAMBAからActiveDirectoryぞのドメむンコントロヌラヌの移行

画像

そのため、科孊的な突進の方法、数人の賢い人、数時間の自由時間を䜿甚しお、前の管理者が䜜成したドメむンをSAMBAからActiveDirectoryに移行する方法に぀いお説明するずきがきたした。





倚くの人がSAMBAをドメむンずしお䜿甚する機䌚を知っおおり、䜿甚しおいたすが、私の意芋では、これは実隓台ずしおのみ䜿甚でき、実際には䜿甚しない方が良いず考えおいたす。 これは誰もが自分自身で決定したす。グルヌプポリシヌの欠劂、蚱可の絶え間ないフリヌズ、頻繁なフリヌズ、信じられないほどのメモリリヌク30日間の連続操䜜の埌、時々16 GBのRAMがすべお消費され、スワップセクション党䜓が䜿甚されたすには満足しおいたせんでした。 したがっお、私の忍耐は終わり、思考を集めお仮想環境での移行を゚ミュレヌトしようず数回詊みたしたが、シベリアのふわふわした動物が来お䜕らかの未知の理由で構造党䜓ずバむンド9を完党に麻痺させるたで時間がありたせんでした70人の事務。 これが緊急移行の時が来た堎所であり、さたざたなマニュアルを読んだ2日間、ActiveDirectoryに飛ぶ2日間は、 この蚘事に出䌚っおTechNetに 掲茉されるたで䜕もしたせんでした。

ドメむンの圹割を倉曎しようずする、぀たり LinuxドメむンにWindows Serverを入力しおバックアップコントロヌラヌにし、その圹割をpdcにアップグレヌドしたすが、仮想環境で1぀のテストが瀺したように、これは悪い考えでした。 すべおのGPOグリッチが転送された単に存圚しなかっただけでなく、その他の誀解もある可胜性がありたす。



私はただすべおをシングルクリックに枛らすこずができなかったため、 Active Perlx86 、Microsoft Office Excel2003および2007甚、Batch、VBS、およびnewsidナヌティリティ サむトで正垞に削陀されたした が䜿甚され、アドオンモゞュヌルacctinfo 。

すべおのアクションはワヌクステヌション䞊のWindows環境で実行され、次にWindows ServerここではWindows Serverが䜕らかの理由で2003 R2 SP2であったこずを明確にしたいので、最新のシステムでの䜜業はテストされおいたせん、1぀のニュアンス、Windows Serverもありたす移行の進行䞭は、MUIを䜿甚せずに英語版を䜿甚するこずをお勧めしたす。移行を劚げるものは䜕もありたせん。



それで、十分な氎、プロセス自䜓に取り掛かりたしょう。



さらなる䜜業の前に、システムのむンストヌルを開始できたすが、システム内で䜕も構成および䜜成するこずなくナヌザヌを䜜成するたでドラむバヌをむンストヌルしたせんでした。



開始した日、すべおのナヌザヌずグルヌプのリストを取埗する必芁がありたす問題があり、すべおのナヌザヌが所属するグルヌプで゚クスポヌトされたわけではないため、確認する必芁がありたす。このため、 ここで芋぀かったvbsスクリプトを䜿甚したした 。より明確で必芁なパラメヌタヌを取埗するために倉曎したすこれは、ドメむン内のドメむンアカりントの䞋にあるPCで行う必芁があるこずにも蚀及する䟡倀がありたす。グロヌバルドメむン管理者のアカりントの䞋で行いたした。



AD User Accounts.vbsを゚クスポヌトしたす
On Error Resume Next strFileName = "Users-Groups-SIDs.xlsx" Set objShell = CreateObject("Wscript.Shell") strPath = Wscript.ScriptFullName Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(strPath) strFolder = objFSO.GetParentFolderName(objFile) SET objExcelApp = CREATEOBJECT("Excel.Application") SET objWB = objExcelApp.Workbooks.Add SET objExcel = objWB.Worksheets(1) objWB.SaveAs(strFolder & "\" & strFileName) Const ADS_SCOPE_SUBTREE = 2 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 'Set the path of the file to the same folder of the script 'Open the file and make the workbook visible Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open(strFolder & "\" & strFileName) objExcel.Visible = True 'objExcel.Cells(1, 1).Value = "Name" 'objExcel.Cells(1, 1).Font.Bold = TRUE 'objExcel.Columns(1).ColumnWidth = 40 'objExcel.Cells(1, 2).Value = "Security ID" 'objExcel.Cells(1, 2).Font.Bold = TRUE 'objExcel.Columns(2).ColumnWidth = 60 'Starting row of the Excel is 2, since first row are column headings y = 2 objCommand.CommandText = _ "SELECT * FROM 'LDAP://DC=mvi,DC=srv' WHERE objectCategory='user'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF strADsPathUser = objRecordSet.Fields("ADsPath").Value 'wScript.echo strADsPathUser Set objUser = GetObject(strADsPathUser) z = 1 objExcel.Cells(y,z) = objUser.sn objExcel.Cells(1, z).Value = "sn" 'Wscript.Echo objUser.sn objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.givenName objExcel.Cells(1, z).Value = "givenName" 'Wscript.Echo objUser.givenName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.initials objExcel.Cells(1, z).Value = "initials" 'Wscript.Echo objUser.initials objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.description objExcel.Cells(1, z).Value = "description" objExcel.Cells(1, z).Font.Bold = TRUE 'Wscript.Echo objUser.description z = z + 1 objExcel.Cells(y,z) = objUser.codePage objExcel.Cells(1, z).Value = "codePage" objExcel.Cells(1, z).Font.Bold = TRUE 'Wscript.Echo objUser.codePage z = z + 1 objExcel.Cells(y,z) = objUser.sAMAccountName objExcel.Cells(1, z).Value = "sAMAccountName" 'Wscript.Echo objUser.sAMAccountName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.codePage objExcel.Cells(1, z).Value = "codePage" objExcel.Cells(1, z).Font.Bold = TRUE 'Wscript.Echo objUser.codePage z = z + 1 objExcel.Cells(y,z) = objUser.mail objExcel.Cells(1, z).Value = "mail" 'Wscript.Echo objUser.mail objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 intUserSID = fnGet_HexString(objUser.ObjectSID) objExcel.Cells(y,z) = intUserSID objExcel.Cells(1, z).Value = "ObjectSID" 'Wscript.Echo objUser.ObjectSID objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.userPrincipalName objExcel.Cells(1, z).Value = "userPrincipalName" 'Wscript.Echo objUser.userPrincipalName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.displayName objExcel.Cells(1, z).Value = "displayName" 'Wscript.Echo objUser.displayName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.distinguishedName objExcel.Cells(1, z).Value = "distinguishedName" 'Wscript.Echo objUser.distinguishedName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 intUserSID = stringlist(objUser.memberOf) objExcel.Cells(y,z) = intUserSID objExcel.Cells(1, z).Value = "memberOf" 'Wscript.Echo objUser.memberOf objExcel.Cells(1, z).Font.Bold = TRUE '   z = z + 1 objExcel.Cells(y,z) = objUser.physicalDeliveryOfficeName objExcel.Cells(1, z).Value = "physicalDeliveryOfficeName" 'Wscript.Echo objUser.physicalDeliveryOfficeName objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.telephoneNumber objExcel.Cells(1, z).Value = "telephoneNumber" 'Wscript.Echo objUser.telephoneNumber objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.profilePath objExcel.Cells(1, z).Value = "profilePath" 'Wscript.Echo objUser.profilePath objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.scriptPath objExcel.Cells(1, z).Value = "scriptPath" 'Wscript.Echo objUser.scriptPath objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.homeDirectory objExcel.Cells(1, z).Value = "homeDirectory" 'Wscript.Echo objUser.homeDirectory objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.homeDrive objExcel.Cells(1, z).Value = "homeDrive" 'Wscript.Echo objUser.homeDrive objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.title objExcel.Cells(1, z).Value = "title" 'Wscript.Echo objUser.title objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.department objExcel.Cells(1, z).Value = "department" 'Wscript.Echo objUser.department objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.company objExcel.Cells(1, z).Value = "company" 'Wscript.Echo objUser.company objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.manager objExcel.Cells(1, z).Value = "manager" 'Wscript.Echo objUser.manager objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.homePhone objExcel.Cells(1, z).Value = "homePhone" 'Wscript.Echo objUser.homePhone objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.pager objExcel.Cells(1, z).Value = "pager" 'Wscript.Echo objUser.pager objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.mobile objExcel.Cells(1, z).Value = "mobile" 'Wscript.Echo objUser.mobile objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.facsimileTelephoneNumber objExcel.Cells(1, z).Value = "facsimileTelephoneNumber" 'Wscript.Echo objUser.facsimileTelephoneNumber objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.ipphone objExcel.Cells(1, z).Value = "ipphone" 'Wscript.Echo objUser.ipphone objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.info objExcel.Cells(1, z).Value = "info" 'Wscript.Echo objUser.info objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.streetAddress objExcel.Cells(1, z).Value = "streetAddress" 'Wscript.Echo objUser.streetAddress objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.postOfficeBox objExcel.Cells(1, z).Value = "postOfficeBox" 'Wscript.Echo objUser.postOfficeBox objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.l objExcel.Cells(1, z).Value = "l" 'Wscript.Echo objUser.l objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.st objExcel.Cells(1, z).Value = "st" 'Wscript.Echo objUser.st objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.c objExcel.Cells(1, z).Value = "c" 'Wscript.Echo objUser.c objExcel.Cells(1, z).Font.Bold = TRUE z = z + 1 objExcel.Cells(y,z) = objUser.wWWHomePage objExcel.Cells(1, z).Value = "wWWHomePage" 'Wscript.Echo objUser.wWWHomePage objExcel.Cells(1, z).Font.Bold = TRUE ''''''''''''''''''''''''''' y = y + 1 objRecordSet.MoveNext Loop objCommand.CommandText = _ "SELECT * FROM 'LDAP://DC=mvi,DC=srv' WHERE objectCategory='group'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF strADsPathGroup = objRecordSet.Fields("ADsPath").Value 'wScript.echo strADsPathGroup Set objGroup = GetObject(strADsPathGroup) 'if objGroup.groupType = "-2147483646" then objExcel.Cells(y,1) = objGroup.sAMAccountName 'Wscript.Echo objUser.sAMAccountName intGroupSID = fnGet_HexString(objGroup.ObjectSID) objExcel.Cells(y,2) = intGroupSID 'Wscript.Echo intUserSID 'End if y = y + 1 objRecordSet.MoveNext Loop objRecordSet.Close objConnection.Close SET objSheet = NOTHING SET objWB = NOTHING objExcelApp.Quit() SET objExcelApp = NOTHING Wscript.echo "Script Finished..." ''' Function stringlist(memberOf) Dim objmemberOf ' Heart of the script, extract a list of Groups from memberOf objmemberOf = objUser.GetEx("memberOf") For Each objGroup in objmemberOf strList = strList & """" & objGroup & """" & " " Next stringlist = strUser & strList 'WScript.Echo "Groups for " & strUser & strList End Function ''' Function fnGet_HexString(intSID) Dim strRet, i, b strRet = "" For i = 0 to Ubound(intSID) b = hex(ascb(midb(intSID,i+1,1))) If( len(b) = 1 ) then b = "0" & b strRet = strRet & b Next fnGet_HexString = fnHexStrToDecStr(strRet) End Function Function fnHexStrToDecStr(strSid) Dim arrbytSid, lngTemp, j ReDim arrbytSid(Len(strSid)/2 - 1) For j = 0 To UBound(arrbytSid) arrbytSid(j) = CInt("&H" & Mid(strSid, 2*j + 1, 2)) Next fnHexStrToDecStr = "S-" & arrbytSid(0) & "-" & arrbytSid(1) & "-" & arrbytSid(8) lngTemp = arrbytSid(15) lngTemp = lngTemp * 256 + arrbytSid(14) lngTemp = lngTemp * 256 + arrbytSid(13) lngTemp = lngTemp * 256 + arrbytSid(12) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) lngTemp = arrbytSid(19) lngTemp = lngTemp * 256 + arrbytSid(18) lngTemp = lngTemp * 256 + arrbytSid(17) lngTemp = lngTemp * 256 + arrbytSid(16) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) lngTemp = arrbytSid(23) lngTemp = lngTemp * 256 + arrbytSid(22) lngTemp = lngTemp * 256 + arrbytSid(21) lngTemp = lngTemp * 256 + arrbytSid(20) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) lngTemp = arrbytSid(25) lngTemp = lngTemp * 256 + arrbytSid(24) fnHexStrToDecStr = fnHexStrToDecStr & "-" & CStr(lngTemp) End Function
      
      







起動するず、Office Excelりィンドりが開き、ファむルUsers-Groups-SIDs.xlsxが開き 、デヌタが1行ず぀曞き蟌たれたすマりスに觊れないこずをお勧めしたす。䜜業が完了するたでクリックしないでください。そうしないず、デヌタの受信䞭に゚ラヌが発生する可胜性がありたす。 スクリプトが終了した埌、 スクリプト完了...ずいう通知を受け取りたす。これは完了を意味したす。スクリプトがテヌブルを解攟するたで数秒埅ちたす。オフィスからテヌブルが曞き蟌み可胜であるずいう通知を受け取り、同意しお「保存」ボタンをクリックしたす。 出力では、列があるテヌブル画面テヌブルが埗られたした。 givenName; むニシャル; 説明; codePage; sAMAccountName; codePage; メヌル ObjectSID userPrincipalName; displayName; distinguishedName; memberOf; physicalDeliveryOfficeName; telephoneNumber; profilePath; scriptPath; homeDirectory; homeDrive タむトル; 郹門; 䌚瀟; マネヌゞャヌ; homePhone; ポケットベル モバむル faxTelephoneNumber; ipphone; 情報; streetAddress; postOfficeBox; l; st; c; wWWHomePage



それらのほずんどは必芁ありたせん䞍芁なパラメヌタを削陀するこずでスクリプト自䜓で修正できたすが、初めおすべおを蚱可したす。

取埗した倀から、 sAMAccountName 列ずObjectSID列が必芁になり、 ObjectSIDを昇順AからZに䞊べ替え、それらをコピヌしおusers.txtテキストファむルに保存し、倖芳を少し倉曎しお、次のように孊習する必芁がありたす sAMAccountName、ObjectSID

぀たり このように



 dns-gw-sult,S-1-5-21-833212901-2941102506-3986841923-1101 DnsAdmins,S-1-5-21-833212901-2941102506-3986841923-1102 IIS_IUSRS,S-1-5-21-833212901-2941102506-3986841923-1102 DnsUpdateProxy,S-1-5-21-833212901-2941102506-3986841923-1103 ivanov,S-1-5-21-833212901-2941102506-3986841923-1105 ozonov,S-1-5-21-833212901-2941102506-3986841923-1108 elina,S-1-5-21-833212901-2941102506-3986841923-1111 anna,S-1-5-21-833212901-2941102506-3986841923-1113 dash,S-1-5-21-833212901-2941102506-3986841923-1115 denis,S-1-5-21-833212901-2941102506-3986841923-1116 danuev,S-1-5-21-833212901-2941102506-3986841923-1119
      
      







ご芧のずおり、各レコヌドは別々の行にあり、最埌の数字は順番に䞊んでいたすが、間隔がありたせんsambaは異なるRIDでLDAPにナヌザヌを曞き蟌んだため぀たり、数字が順番に䞊んでいるため、ADは行にナヌザヌを䜜成したす。特定のRIDから始めお、欠萜しおいるすべおのナヌザヌを䜜成し、倚少なりずも明確にそれらを呌び出す必芁がありたす、ここではperlスクリプトscript-add user.plを䜿甚しおそれらを埋めたす



script-add user.pl
 use strict; use warnings; use Data::Dumper; my (%input, %output,$max); my $input_file = "users.txt"; my $output_file = "output.txt"; my $sambaSID = "S-1-5-21-833212901-2941102506-3986841923-"; open FIN, "<$input_file"; while (<FIN>) { chomp(); if (/(.*),$sambaSID(.*)/) { $input{$2}=$1; $max=$2 if $2 > $max; } } close FIN; print Dumper(\%input); print Dumper($max); open FOUT, ">$output_file"; for (my $i=1001;$i<=$max;$i++) { if (exists $input{$i}) { print "input: $input{$i} i: $i\n"; print FOUT "$input{$i}\n"; } else { print FOUT "user$i\n"; } } close FOUT;
      
      







元の蚘事ではあたり効果がないので、友人に゚ラヌの修正を䟝頌したした。少なくずもスクリプトは蚈画どおりに機胜したした。

出力では、次の内容のファむルoutput.txt ナヌザヌはRID 1001以降で始たり、名前はuser1001などを取埗したした。



output.txt
 user1001 user1002 user1003 user1004 user1005 user1006 user1007 user1008 user1009 user1010 user1011 user1012 user1013 user1014 user1015 user1016 user1017 user1018 user1019 user1020 user1021 user1022 user1023 user1024 user1025 user1026 user1027 user1028 user1029 user1030 user1031 user1032 user1033 user1034 user1035 user1036 user1037 user1038 user1039 user1040 user1041 user1042 user1043 user1044 user1045 user1046 user1047 user1048 user1049 user1050 user1051 user1052 user1053 user1054 user1055 user1056 user1057 user1058 user1059 user1060 user1061 user1062 user1063 user1064 user1065 user1066 user1067 user1068 user1069 user1070 user1071 user1072 user1073 user1074 user1075 user1076 user1077 user1078 user1079 user1080 user1081 user1082 user1083 user1084 user1085 user1086 user1087 user1088 user1089 user1090 user1091 user1092 user1093 user1094 user1095 user1096 user1097 user1098 user1099 user1100 dns-gw-sult IIS_IUSRS DnsUpdateProxy user1104 ivanov user1106 user1107 ozonov user1109 user1110 elina user1112 anna user1114 dash denis user1117 user1118 danuev
      
      







結果のリストをdsadd-new.xlsテヌブルに入れ、ニヌズに合わせお少し倉曎する必芁がありたした。 [ ログむン ]列に倉曎したテヌブルを配眮したす。 SID列のナヌザヌの初期SID、およびuser-1101に S-1-5-21-833212901-2941102506-3986841923-1101が必芁であるこずを確認したす user-1102に S-1-5-21-833212901-2941102506-3986841923がありたす-1102 䜜業のロゞックは理解できるず思いたすが、既知のナヌザヌのSIDは以前ず同じたたにしおおく必芁がありたす。ファむルUsers-Groups-SIDs.xlsxにありたす 。 ナヌザヌを以前䜿甚しおいたグルヌプに配眮するには、そのためにUsers-Groups-SIDs.xlsx ファむルからmemberOf列を取埗し、 GROUP列のdsadd-new.xlsファむルに各ナヌザヌを配眮する必芁がありたす。 たた、必芁に応じお他のすべおのフィヌルドに入力する必芁がありたすが、姓ず名の列をクリックするようにしおください 。 そうしないず、䜜成コマンドの䜜成が䞍正確になりたす。 ログむンの倉曎に満足できない堎合、テンプレヌトを倉曎するか、必芁なログむンを自分で蚘述した堎合、 ログむン列はドメむンに入るためのナヌザヌ名を自動的に生成したす䞀郚のナヌザヌは別のログむンを持っおいるため、必芁なものに眮き換えたす。

たた、次の堎合に泚意するようお願いしたす。

-[ミドルネヌム]列は入力されおいたせん。ナヌザヌを䜜成するず、最埌に䜙分なスペヌスが远加され、䞀郚のプログラムで問題が発生する可胜性がありたす。

-グルヌプの自動䜜成を完了できなかったため、OUナヌザヌでグルヌプを䜜成する暗号を䜿甚しおグルヌプを䜜成したすが、これにより、さたざたなサヌビスApache、OpenVPNなどで䞀郚の認蚌が動䜜しなくなる可胜性がありたす。 OU-BuiltinずOU-Groupsもありたしたが、これたでのずころ、すべおをヒヌプに眮くこずにしたした。





add_group.cmd
 rem   (CN)  CN Users rem dsadd group "cn=,cn=users,dc=mvi,dc=srv" for %%A in ( jira-users, jira-administrators, Developers, jira-developers, mvi-users, berry-dev, online-developers, marketing-users, Marketing, ne-users, ne-developers, ne-admin, marketing-administrators, online-users, bills,QA, ) do dsadd group "cn=%%A,cn=users,dc=mvi,dc=srv" rem   (OU)   rem dsadd group "cn=,cn=groups,dc=mvi,dc=srv" dsadd ou "ou=Groups,dc=mvi,dc=srv" for %%B in ( vpn-users, svn-users, jenkins-adm, jenkins, PHP_Developers, amazon-users, ) do dsadd group "cn=%%B,ou=groups,dc=mvi,dc=srv"
      
      







定期的なコピヌず貌り付けず怜蚌操䜜を実行した埌、batファむルを準備しお、グルヌプに远加するナヌザヌずチヌムの䜜成に圹立おるこずができたす。 グルヌプのTOTALおよびTOTALの列には、ナヌザヌを䜜成するためのコマンドず、それぞれグルヌプにコンテンツを远加し、batファむルadd_user.cmd 、 add_group.cmdに保存するためのコマンドがありたす。

ナヌザヌずグルヌプの圢成の準備ができたした。



それでは、Windows Serverに取り掛かりたしょう。 珟時点では、システムをむンストヌルする必芁がありたす。 newsidナヌティリティが必芁です。 ナヌザヌのリストからSIDを取埗したす。これはS-1-5-21-833212901-2941102506-3986841923 ナヌザヌの受信SIDから、 「-」たでの最埌の文字を削陀し、ドメむンのSIDを取埗したすで、システムの珟圚のSIDを圓瀟のものに眮き換えたす。 システムは倉曎を開始しお再起動したす再起動埌、ナヌティリティを再床実行しお、SIDの倉曎を確認できたす。 それだけです、ActiveDirectoryサヌビスをむンストヌルできたす方法はわかりたせんが、最初にDNSを蚭定し、その蚭定をスキップし、 dcpromoを䜿甚しおドメむンサヌビス自䜓を構成したす。その前に、 SAMBAサヌバヌをオフにしおバむンドするか、これらのサヌビスをオフにする必芁がありたすむンタヌネットぞのゲヌトりェむでもあるため、サヌビスをオフにしおください。 別のドメむン名を指定できるかどうかはわかりたせん䜕も劚げられたせんが、珟圚のドメむン名を残す必芁がありたした。 必芁な蚭定を行い、システムを再起動したすすべおが通垞どおりです。 ここで、モゞュヌルをむンストヌルしおacctinfoオブゞェクトの衚瀺プロパティを展開する必芁がありたすダりンロヌド先の䞊のリンクを䜿甚しお、むンストヌル方法が蚘茉されおいたす 。ActiveDirectory ナヌザヌずコンピュヌタヌスナップむンを実行したす。 add_user.cmdスクリプトの最初の行から1人のナヌザヌを䜜成しようずしおいたす

 dsadd User "cn=user-1101 user-1101 ,cn=users,dc=mvi,dc=srv" -UPN dns-gw-sult@mvi.srv -samid dns-gw-sult -display "user-1101 user-1101 " -fn user-1101 -ln user-1101 -pwd "p6Jx3Xre" -mustchpwd yes -disabled no -pwdneverexpires yes
      
      





[ Active Directory-Users and Computers ]で、[ Additional Account Info ]タブのプロパティにあるSIDを確認したす。 ナヌザヌ名がSIDの末尟に䞀臎する堎合、すべおが正しく、修正する必芁はありたせんSIDが䞀臎しない堎合は、次のSIDを持぀ナヌザヌで開始したす。぀たり、珟圚のSIDに1を远加したす。 この時点で、1人のナヌザヌで重倧な倱敗が発生したした。圌のSIDには1105が含たれおおり、ナヌザヌは1106から䜜成を開始したした。 その識別子は無効でした。

ナヌザヌが䜜成される順序を確認した埌、察応しなくなったコマンドを削陀/コメント化しおナヌザヌの䜜成を調敎する必芁がありたす。 user-1107たでのすべおを削陀し、 add_user.cmdスクリプトを安党に実行できたす。 実行埌、グルヌプを䜜成する必芁がありたす。そうしないず、䜕も機胜したせん。 add_group.cmdを実行しお、すべおのグルヌプが䜜成されおいるかどうかを確認したすグロヌバルセキュリティグルヌプが䜜成されおいるこずに泚意しおください。他のタむプが必芁な堎合は、スクリプトに-scope {l | g | u}を远加し、 dsadd groupのマニュアルを読んでください。



dsaddグルヌプ/
 .    . : dsadd group <GroupDN> [-secgrp {yes | no}] [-scope {l | g | u}] [-samid <SAMName>] [-desc <Description>] [-memberof <Group ...>] [-members <Member ...>] [{-s <Server> | -d <Domain>}] [-u <UserName>] [-p {<Password> | *}] [-q] [{-uc | -uco | -uci}]    <DN_>   stdin.   (DN)  .     ,      (stdin). -secgrp {yes | no} ,    (yes)    (no)  .  : yes. -scope {l | g | u} ,       (l),  (g)   (u).      ,    .  : . -samid <_SAM>     SAM  <_SAM> (, "operators"). -desc <>    <>. -memberof <...>       ,      DN <...>. -members <...>       .       <...>. {-s <> | -d <>} -s <>      ()   <>. -d <>      .  :    . -u <>    <>.  :  .  : , \   - (UPN). -p {<> | *}   <>.   *,    . -q  :      . {-uc | -uco | -uci} -uc           . -uco          . -uci          . .        ,         (STDIN).  STDIN     ,       .      STDIN     ,  CTRL+Z     (EOF).     ,     (, "CN=Ivan Ivanov,CN=Users,DC=microsoft,DC=com").     ,    (,    ). . : dsadd computer /? -      . dsadd contact /? -      . dsadd group /? -      . dsadd ou /? -      . dsadd user /? -      . dsadd quota /? -      .        : dsadd /? -    . dsget /? -    . dsmod /? -    . dsmove /? -    . dsquery /? -    ,   . dsrm /? -    .
      
      







確認埌、ナヌザヌをadd_user_group.cmdグルヌプに远加するスクリプトを実行したす違いがある可胜性があるこずに泚意し、グルヌプが䜜成された堎所ずナヌザヌが指定した堎所を確認したす。



SAMBAの代わりにActiveDirectoryを䜿甚し、ナヌザヌは同じ識別子を持ち、コンピュヌタヌ自䜓をドメむンに入力し、タスクが完了したす。それぞれ個別のいく぀かのポむントを完了するだけで枈みたす。



私が曞いたテキストは、通垞、混oticずした、混、ずした、゚ラヌ、おそらく䞍正確さなどを含んでいたす。



すべおのスクリプトを1か所に䟋ずずもに。



PS

この堎合、cmdはOEM゚ンコヌドを䜿甚しお保存する必芁があるこずを皆さんが芚えおいるこずを願っおいたすか

修正のために゚ラヌを報告しおください。



䜿甚材料
sysadmins.ru/post7750072.html

social.technet.microsoft.com/Forums/de-DE/windowsserverru/thread/c75c66cb-5621-4ad7-923d-ec22d81cb2b2

gallery.technet.microsoft.com/scriptcenter/1af1f056-c945-4d18-a4aa-c244ac1daac7

it-kursy.ru/article/admtools/user-xls

download.chip.eu/ru/NewSID_163121.html




All Articles