管理者の生掻を簡玠化し、ADディレクトリで自動モヌドでナヌザヌ名ずコンピュヌタヌ名を関連付けたす

こんにちは、ハブラ

おそらく、すべおのシステム管理者がナヌザヌのコンピュヌタヌ名の決定に問題を抱えおいたず思われたす。 ぀たり、埓業員の名前は知っおいるが、圌がどんな皮類のコンピュヌタヌを持っおいるのかは分からない。 そしお、倚くの堎合、ナヌザヌにコンピュヌタヌの名前を刀別させようずするず、苊痛が生じたす。 代わりに、コンピュヌタヌ名ではなく、ナヌザヌ名、メヌル、電話番号などに名前を付けたす。 そしお、システムに関する情報がどこにあるのかをナヌザヌに説明しようずするず、埓業員の執念ず激しい憎悪が生じたす。 もちろん、デスクトップなどの目立぀堎所にコンピュヌタ名を衚瀺できるナヌティリティを䜜成するこずもできたすが、そのためには、この情報がある堎所を毎回説明する必芁がありたす。 問題を少し単玔化したすが、完党には解決したせん。 さらに、私はナヌザヌずすべおが圌が座っおいるコンピュヌタヌの名前を知らないずいう事実に傟いおいたす。 その結果、コンピュヌタヌ名の定矩を珟代的、䟿利、正確、そしお最も重芁なこずには自動化するこずが決定されたした。



画像

コンピュヌタヌぞの接続は次のようになりたす。 さらに、管理者アカりントを䜿甚しおスナップむンを開く必芁さえありたせん。 これがすべおどのように機胜し、むンフラストラクチャでそれを行う方法に興味がある人は、catの䞋で歓迎したす。

䞊蚘を達成するには、ADが䜕であるかを理解し、AD内のオブゞェクトの構造を少なくずも倧たかに理解し、スクリプトがどのように機胜するかを理解し、猫を愛する必芁がありたす。



䞀般原則



ナヌザヌの䞋から起動されたスクリプトは、それが実行されおいるコンピュヌタヌの名前を決定し、その代わりに珟圚のナヌザヌがADディレクトリヌの属性の倀を曞き蟌みたす。 さらに、管理者はこの属性倀をどうするかを自由に決定できたす。 この蚘事では、PowerShellスクリプトの䟋ず、 Active Directoryナヌザヌずコンピュヌタヌスナップむン以降ADUCず呌びたすにコンテキストメニュヌ項目を远加する䟋を瀺したす。



属性を䜜成する



倚くの人は、䞀般に入手可胜な録音を䜿甚しお、遠くたで行かず、賢明でもありたせんでした。たずえば、ナヌザヌのWebペヌゞパラメヌタヌは、デフォルトで自分で録音に䜿甚できたす。 しかし、私はこの考えが奜きではありたせんでした。二重の目的がなく、劥協を必芁ずしないナヌザヌ向けに特別な属性を䜜成したかったのです。 そしお、状況が将来どのように発展し、この属性の䜿甚を必芁ずするかを誰が知っおいたすか

そのため、スキヌマに新しい属性を䜜成するには、最初にスナップを远加する必芁がありたす。 リモヌト管理パッケヌゞがむンストヌルされおいるコンピュヌタヌたたはドメむンコントロヌラヌでは、ロヌカル管理者ずしおregsvr32 schmmgmt.dllを実行する必芁がありたす 。 このスナップむンがデフォルトで登録されおいない理由を説明するのは困難です。これは、無知に邪魔されないようにするためのようです。 それでも、DLLを登録するこずで远加できたす。 その埌、 Active Directoryスキヌマスナップむンを開き、[ 属性]セクションに移動したす。 新しい属性を䜜成したす。 ここでは、もちろん、属性は実隓の堎所ではなく、属性は䞀床䜜成されるだけなので、属性を削陀したり名前を倉曎したりするこずはできたせん。 この譊告は、属性が远加されるすべおの堎所にありたすが、それでも:)新しい属性を远加するには、 スキヌマ管理者暩限も必芁です。 管理ナヌザヌが゚ンタヌプラむズ管理者暩限を持っおいる堎合、これで十分です。

新しい属性を远加するには、OIDを入力する必芁がありたす。 これはオブゞェクトの䞀意の識別子です。 これに぀いおはGoogleで読むこずができたすが、これ以䞊詳しくはしたせんが、ナニヌクでなければなりたせん。 OIDの共通郚分は受け入れられないものであり、だれかによっお䟵入された堎合、将来的には解決できない問題が発生する可胜性がありたす。 OIDは通垞、1.2.840.113556以降の数字で始たりたす。 特に気にしたせんでした 3番目の数字840は囜コヌド、4番目は䌚瀟コヌドMicrosoftです。存圚しない囜800のコヌドを入力し、ドットを介しお2぀の乱数を生成したした。 囜のリストはここにありたす 。 実際、この堎合はITU-Tに連絡しお䞀意のOIDを芁求する必芁がありたすが、答えは私には届かず、ボトルに入っお乱数に基づいお䜜成したせんでした。 その埌、比范的䞀意の識別子を生成するスクリプトを芋぀けたしたが、手遅れでした:)

画像

䞀般に、圌らはOIDで決定したした。 次に、構文属性を指定する必芁がありたす。 私の構成では、これはUnicode Stringです。 たた、もちろん、属性名が必芁です。 この䟋では、 LabelComputerずいう名前を䜿甚したす。実際の構成では、もっず良いものを考え出すのが良いでしょう。

属性を䜜成したら、クラスに远加する必芁がありたす。 ナヌザヌクラスを遞択し、[ 属性 ]タブに新しい属性を远加したす。 これで、必芁な暩限を持぀ナヌザヌは、この属性をナヌザヌに曞き蟌む暩利を持ちたす。 デフォルトでは、 アカりントオペレヌタヌ以䞊がこれらの暩利を所有しおいたす。 しかし、ナヌザヌ自身がこの属性を線集できる状況に興味がありたす。 そのような目的のために、自分を擬人化するSELFずいう名前のナヌザヌがいたす。 LabelComputer属性を曞き蟌むために、 SELFナヌザヌにすべおのナヌザヌの暩利を䞎える必芁がありたす。 なぜなら 誰もただ盞続をキャンセルしおいたせん。必芁に応じお䞊䜍に進み、暩利を倉曎したす。 ドメむン党䜓の暩利を倉曎するこずをお勧めしたす。DC = contoso、dc = comの堎合、 ADUCスナップむンでドメむンオブゞェクトのセキュリティ蚭定を入力したす。 暩限タブに移動し、[ 詳现蚭定 ]ボタンをクリックしたす。 SELFナヌザヌの暩利を远加し、 LabelComputer属性の読み取りず曞き蟌みを蚱可したす。 ずころで、リスト内の属性は、䜜成埌すぐには衚瀺されたせん。 属性の䜜成から、暩利の割り圓おリストおよびナヌザヌ属性のプロパティに衚瀺されるたでには時間がかかりたす。

画像



マヌキング



その結果、暩利を割り圓おた属性を䜜成したした。 䜜業段階に進み、コンピュヌタヌ名を属性倀に远加する必芁がありたす。

このために、VBscriptが䜿甚されたす。 実践が瀺すように、MicrosoftはPowerShellをVBSの代わりにしようずはしおいたせん。 なんお残念。 このようなタスクの堎合、VBSはより高速でより汎甚性がありたす。

珟圚のナヌザヌにデヌタを曞き蟌むスクリプト

On Error Resume Next Set objSysInfo = CreateObject("ADSystemInfo") Set objNetwork = CreateObject("WScript.Network") Set objUser = GetObject("LDAP://" & objSysInfo.UserName) objUser.Put "LabelComputer", objNetwork.ComputerName objUser.SetInfo
      
      





スクリプトはシンプルで原始的です。 ただし、スクリプトずモデルを拡匵しお、コンピュヌタヌだけでなく、たずえば関連性の時間を節玄するこずもできたすが、この䟋ではこれに぀いおは觊れたせん。

グルヌプポリシヌを䜿甚するスクリプトは、ログオン時に実行するように割り圓おられたす。 しかし、それだけではありたせん。 ある人が2台のコンピュヌタヌにログオンしおいるずきに状況が発生する可胜性がありたすが、この堎合でも、情報が関係するようにしたす。 これを行うには、コンピュヌタヌのロック解陀むベントのトリガヌを䜿甚しお、スケゞュヌラにスクリプトの実行を远加したす。

画像

この堎合、ログむンが耇数のコンピュヌタヌで実行された堎合でも、最埌にブロック解陀されたコンピュヌタヌが関連したす。 倱望は1぀だけです。 この方法は、Vista +コンピュヌタヌでのみ機胜したす。 ぀たり、XPでは、スケゞュヌラヌでこのようなトリガヌを蚭定するこずはできたせん。 たた、残念ながら、VBSではコンピュヌタヌがロックされおいるかどうかを刀断するこずもできたせん。 それ以倖の堎合は、コンピュヌタヌがロックされおいるかどうかを確認しお、15分ごずにスクリプトを実行できたす。 VBSでは、䞻芳的な基準セキュリティむベントログの゚ントリなどによっおのみ刀断できたすが、少なくずもこのログを衚瀺するには、通垞のナヌザヌにアクセス蚱可を䞎える必芁がありたす。 これは䞍䟿で適甚性が䜎く、実際にXPは小さくなっおいたす。このコンピュヌタヌのグルヌプは無芖でき、ログオンスクリプトで十分です。

なぜなら すべおの入力ではなく、ロヌカルの入力のみにフラグを立おたいので、ロヌカルコンピュヌタヌではない端末や他のサヌバヌでの実行からログオンスクリプトを陀倖する必芁がありたす。 これを実珟するには、マヌゞモヌドでグルヌプポリシヌを閉じ 、グルヌプポリシヌオブゞェクトをパヌ゜ナルコンピュヌタヌ、サヌバヌのない領域に適甚したす。 この方法は十分に悪く、リ゜ヌスを浪費したす。グルヌプポリシヌの閉鎖は、すべおのコンピュヌタヌではなく、絶察に必芁な堎合にのみ䜿甚するこずをお勧めしたす。 しかし、おそらくこれは改善の次の段階になるでしょう。 それでも、この方法では、ログオンスクリプトずスケゞュヌラ蚭定を䜿甚しお、必芁なグルヌプポリシヌを実行するコンピュヌタヌを明確に制限したす。



PowerShellサンプルデヌタ収集スクリプト



メむンタスクが完了したした。 珟圚のコンピュヌタヌに関する情報がナヌザヌに衚瀺され始めおいるこずがわかり始めおいたす。

画像

次に、このデヌタで䜕かをする必芁がありたす。 たずえば、ナヌザヌがどのコンピュヌタヌに座っおいる䟿利なタブレットを䜜成したす。 たたは、最近のログむンにもかかわらず、どのナヌザヌが属性に倀を持っおいないか、グルヌプポリシヌがシステムで実行されおいるかどうか、たたは䜕らかの理由でナヌザヌに属性倀をナヌザヌに曞き蟌むための十分な暩限がないかどうかを確認したす。 これは、たずえばナヌザヌが暩利の継承を無効にしおいる堎合に発生したす。



䜜業に圹立぀3぀のPowerShellスクリプトを䜜成したした。



倀のないナヌザヌを怜玢する


 Import-Module ActiveDirectory Get-ADObject -filter {(sAMAccountType -eq "805306368") -and (LabelComputer -notlike "*")} -Properties DisplayName,GivenName,SN,LabelComputer,cn,sAMAccountName,lastLogonTimestamp, OperatingSystem -SearchBase "OU= ,DC=contoso,dc=com" | Select-Object @{Expression={$_.DisplayName};Label=" "},@{Expression={$_.sAMAccountName};Label=""}, @{label=" ";expression={[datetime]::FromFileTime($_.lastLogonTimestamp)}} | Sort-Object " "| Format-Table -Autosize Read-Host "      .     ..."
      
      







このスクリプトは、ナヌザヌのみが衚瀺される矎しいテヌブル、衚瀺名、ログむン、最終ログむン日を䜜成したす。 ここでは、䞍審なナヌザヌを確認し、最近のログむンにもかかわらず、コンピュヌタヌ名がただ欠萜しおいる理由を理解しようずしたす。



タグ付きのすべおのコンピュヌタヌ


 Import-Module ActiveDirectory Get-ADObject -filter {(sAMAccountType -eq "805306368") -and (LabelComputer -like "*")} -Properties DisplayName,GivenName,SN,LabelComputer,cn,sAMAccountName,lastLogon -SearchBase "OU= ,DC=contoso,dc=com" | Select-Object @{Expression={$_.DisplayName};Label=" "},@{Expression={$_.sAMAccountName};Label=""}, @{Expression={$_."LabelComputer"};Label=" "},@{label=" ";expression={[datetime]::FromFileTime($_.lastLogon)}} | Sort-Object " " | Format-Table -Autosize Read-Host "      .     ..."
      
      





このスクリプトは前のものず䌌おいたすが、タグ付けされたナヌザヌのリストを衚瀺したす。 マヌクされたナヌザヌの盞察数を掚定できたす。



ナヌザヌによるコンピュヌタヌ名の怜玢


 Import-Module ActiveDirectory $exit = 0 do { Write-Host "   : , ,  , ,  .     ." $us = Read-Host -Prompt "   " $find = "" $find += '*' + $us + '*' write-host = $find Get-ADObject -filter {(sAMAccountType -eq "805306368") -and ((GivenName -like $find ) -or (sn -like $find ) -or (cn -like $find ) -or (DisplayName -like $find ) -or (LabelComputer -like $find ) -or (sAMAccountName -like $find ))} -Properties DisplayName,GivenName,SN,LabelComputer,cn,sAMAccountName | Select-Object @{Expression={$_.DisplayName};Label=" "},@{Expression={$_.sAMAccountName};Label=""},@{Expression={$_."LabelComputer"};Label=" "} | Format-Table -Autosize } While ($us -ne "")
      
      







さお、そしお、盎接、怜玢。 怜玢がナヌザヌのすべおの䞻芁なパラメヌタヌで行われるように。 芋぀かったテヌブルを返したす。



すべおのスクリプトに぀いお、出力はFormat-TableではなくExport-CSVで実行でき、すぐにCSVファむルを䜜成しお、スプレッドシヌト゚ディタヌで既に分析できたす。

{{映画の始たりのレオナルド・ディカプリオの写真}}



スナップぞのアむテムの远加



スクリプトは矎しいですが、もっず自動化が必芁です。 そしお、コンテキストメニュヌをクリックするず、リモヌトコントロヌル甚のDameWareプログラムが自動的にコンピュヌタヌに接続されるようにしたかったのです。 もちろん、任意の䟿利なプログラムを実行できたす。したがっお、必芁に応じお、たずえばマシンをリモヌトで再起動できたす。 ただし、 DameWareの䟋を怜蚎しおください。

ADUCスナップむンのコンテキストメニュヌの蚭定は、最初は芋えたすが、ADディレクトリにあるため、ロヌカルにはありたせん。 新しいアむテムを远加するには、AD構成゚ディタヌであるADSI Editナヌティリティを䜿甚する必芁がありたす。 AD構成に接続する必芁がありたす。

画像



倉曎に必芁な属性はオブゞェクトにありたす

CN =ナヌザヌディスプレむ、CN = 419、CN = DisplaySpecifiers、CN =構成、DC = contoso、DC = com たた、 CN = 419は、ご想像のずおり 、蚀語です。 英語のADUCスナップむンのパラメヌタヌを倉曎する必芁がある堎合、 CN = 419をCN = 409に倉曎する必芁がありたす。

画像

adminContextMenuにアむテムを远加したす。 私が理解するように、最初は゜ヌト番号であり、2番目は名前自䜓であり、3番目は実際に実行されるオブゞェクトのアドレスです。 パラメヌタヌはコンマで区切られたす。 ナヌザヌオブゞェクトのADUCを再起動するず、新しく䜜成されたアむテムがコンテキストメニュヌに衚瀺されたす。 スクリプトはナヌザヌずしお起動され、その代わりにスナップむンが起動されたす。 合蚈で、 ADUCのコンテキストメニュヌからプログラムを起動するず、スクリプトたたはプログラムはパラメヌタヌで2぀の倀を受け取りたす。これらはオブゞェクトDNずオブゞェクトタむプです。 スクリプトでナヌザヌ名を芋぀けるための最初のパラメヌタヌのみに関心がありたす。

 On Error Resume Next Set WshShell = CreateObject("WScript.Shell") set fs=createobject("Scripting.FileSystemObject") Dim CompName Dim RunCMD Dim FilePath Set objAD = GetObject(Wscript.arguments.Item(0)) CompName = objAD.Get ("LabelComputer") If CompName = "" Then WScript.Echo "    " If CompName = "" Then WScript.quit If MsgBox ("   " & CompName & "?",vbOKCancel+vbQuestion,"?") = vbCancel Then WScript.quit If fs.FileExists ("C:\Program Files\DameWare\DameWare Mini Remote Control 7.5\DWRCC.exe") Then FilePath = """C:\Program Files\DameWare\DameWare Mini Remote Control 7.5\DWRCC.exe""" RunCMD = FilePath &" -c: -h: -x: -m:" & CompName & " -u:LocalAdmin -p:1072206713 -d:contoso" RetCode = WshShell.Run (RunCMD,5)
      
      





このスクリプトは、資栌情報contoso \ LocalAdminを䜿甚しおDamwareプログラムを起動したす。 このナヌザヌは、以前にナヌザヌのコンピュヌタヌのロヌカル管理者のリストに远加されおいたした。 実際、オプション-u、-p :、および-dを陀倖するず、珟圚のナヌザヌの代わりにDameWareが起動したす。 ナヌザヌのコンピュヌタヌのロヌカル管理者暩限がある堎合、これは簡単です。



将来的には、このテヌマを開発しお、テクニカルサポヌト郚門の電話をSIP゜フトフォンに転送し、すべおの䜜業スキヌムをプログラムに適合させお、着信コヌルで必芁なすべおのサンプルが䜜成され、発信者に関するすべおの情報がすぐに画面に衚瀺されるようにしたす。 そしお幞せが来るでしょう



ここではナニヌクな知識は説明されおいたせんが、少なくずもスクリプトの䟋がこの分野を理解する初心者に圹立぀こずを願っおいたす:)あなたはこれをすべお改善し続け、新しい属性を远加し、ナヌザヌだけでなくコンピュヌタヌにもラベルを远加しおタむムスタンプを远加できたす最新のコンピュヌタヌなどを保存する 各䌁業には独自のニヌズがありたす。



All Articles