こんにちは。この記事では、1つの大企業のテクニカルサポートの2番目のラインの1つのルーチンタスクを自動化するために適用した実用的なソリューションについて説明します。
10,000人に地理的に分散した2つのADドメインがあります。これは、複数の統合情報システムと活発に成長しているデータベースを備えたRemoteAppアプリケーションを介してリモートデスクトップへのWebアクセスを整理するためのアプリケーションソリューションで、月に最大500人です。 1営業日あたり約24、1時間あたり約3人。
入力データからの最初の明らかな結論は、1人の管理者はそのような数のユーザーに対処できないということです。彼は、企業を麻痺させることなく病気になる/休暇を取る権利を持っている必要があります。そして実践は、2つでも対処できないことを示しています。
2つ目の問題は、企業のファイルリソースなどの個人識別です。よくあることですが、詮索好きな情報ではないため、アクセスを要求する各人を確認する必要があります。 Active Directoryにアクセスし、特定のアクセスグループを許可します。 残念ながら、この問題を解決するには官僚機構なしでは実現できませんでした。手順は、申請者の長によって最も標準化され、署名された(できれば電子的な)形式で紙の申請書を提出し、署名者に個人的に精通している人がこの文書を承認することに要約されます。
標準化されたアプリケーションの承認後、ほとんど何もせず、ADに人を追加し、必要なアクセスグループを割り当て、優れたプレートを追加する必要があります。 AD自体が変更の監査を完全にサポートしているため、最後のポイントは少し古風に見えるかもしれませんが、私の実践では、このポイントはそのようなターンでは不要ではなく、報告の場合にレーキを見つけるプロセスを簡素化することさえあります。最初の結論に続いて、しばしば発生します...
ただし、いくつかの簡単なスクリプトを使用することで、プロセスをわずかに自動化できます。ロジックは、逆のプロセスに要約されます。
- 企業におけるAD会計基準の承認
- 統一された形式のデータをユーザーに求めます。
- テーブルに基本データを入力します。次に例を示します。
- ExcelからCSVファイルにエクスポートします。これは、スクリプトを使用したADへの自動入力に適した自動生成ページです。
- エクスポートして出来上がり!ユーザー名とパスワードをユーザーに転送する必要があります。
私が説明した方法は、ベストプラクティスとは言えないかもしれませんが、実際には、個別の情報システムを作成したり、多数の統合を作成したりすることなく、既存の問題を解決できます。
次に、いくつかの技術的なポイントを説明し、使用するスクリプトを公開し
ます。ADへのインポートに適したテーブルは次のようになります
。私にとって、このテーブルは前のテーブルから自動的に生成されます。例を添付します 。
インポートに適したテーブルをCSV形式(カンマ区切り)で保存する必要が
あります。生成されたファイルをメモ帳で開くと、区切り文字はどうなると思いますか?違う。そのような - ";"
これとは別に、私の実装では、音訳の列にこだわる必要があります。私たちが承認した標準では、承認されたサンプルに従って一部のフィールドが音訳で埋められています。vbaスクリプトを使用するたびにこれを行わないようにするために、次のようになります。
Function TranslitText(RusText As String) As String
Dim RusAlphabet As Variant '
RusAlphabet = Array("-", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
Dim EngAlphabet As Variant '
EngAlphabet = Array("-", "a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "y", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "sch", "", "y", "", "e", "yu", "ya", "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Sch", "", "Y", "", "E", "Yu", "Ya")
Dim EngText As String, Letter As String, Flag As Boolean
For i = 1 To Len(RusText) '
Letter = Mid(RusText, i, 1)
Flag = 0
For j = 0 To 67 '
If RusAlphabet(j) = Letter Then ' ...
Flag = 1
If RusAlphabet(j) = Letter Then ' ( )
EngText = EngText & EngAlphabet(j) '...
Exit For
Else
EngText = EngText & UCase(EngAlphabet(j))
Exit For
End If
End If
Next j
If Flag = 0 Then EngText = EngText & Letter ' (, ..),
Next i
TranslitText = EngText
End Function
私のようにしないでください。リンクにある既存の音訳標準の1つを使用して ください。
拡張子が.ps1のファイルに配置された次のスクリプトを使用すると、数回クリックするだけで、前の手順で生成されたファイルのすべてのアカウントを、いくつあってもADにドロップできます。同時に、作成されたすべてのUZで広告グループグループをハングアップします。
Import-Module activedirectory
Import-Csv "C:\generated.csv" -Encoding default -Delimiter ';'| ForEach-Object {
New-ADUser -Server DOMEN.RU -Name $_.FirstName `
-DisplayName $_.DisplayName `
-GivenName $_.GivenName `
-Surname $_.LastName `
-Initials $_.Initials `
-OfficePhone $_.Phone `
-Description $_.Description `
-UserPrincipalName $_.UserPrincipalName `
-SamAccountName $_.samAccountName `
-Email $_.mail `
-Path "OU=TEST_OU,OU=Guest,OU=Users,OU=DOMEN,DC=DOMEN,DC=RU" `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -force) -Enabled $true
Set-ADuser $_.samAccountName -ChangePasswordAtLogon $True
Add-AdGroupMember -Identity ad-group -Members $_.samAccountName
}