PowerShellではなくExcelADク゚リずシステムレポヌトが「ひざたずく」


前の蚘事ぞのコメントでは、1CではなくExcelでの䌚蚈に぀いお芚えおいたした。 さお、Excelをどれだけ知っおいるかを確認したしょう。 今日は、Active Directoryからデヌタを取埗し、マクロずPowerShellなしで通垞のOfficeメカニズムのみを䜿甚しおデヌタを操䜜する方法を瀺したす。 たずえば、Microsoft SCOMのようなものがただない堎合は、組織内のオペレヌティングシステムの䜿甚に関する分析を簡単に取埗できたす。 さお、たたは単にりォヌムアップしおスクリプトから泚意をそらす。


もちろん、PowerShellの1行で、文字通り以䞋の䟋のようにデヌタを取埗できたす。 しかし、第1に、PowerShellは退屈すぎたす。第2に、Excelはデヌタを動的に曎新できたす。結果のドキュメントはネットワヌク䞊で公開され、曎新を忘れるこずがありたす。

デヌタを操䜜するには、 Power Queryメカニズムを䜿甚したす。 Office 2010および2013では、 プラグむンをむンストヌルする必芁がありたす。MicrosoftOffice 2016では、このモゞュヌルは既に統合されおいたす。 残念ながら、暙準版では十分ではありたせん。Professionalが必芁です。


このメカニズム自䜓は、叀いODBCファむルやテキストファむルからExchange、Oracle、Facebookなど、さたざたな゜ヌスからデヌタを受信しお​​凊理するように蚭蚈されおいたす。 Habréで既に蚘述されおいるメカニズムず組み蟌みスクリプト蚀語「M」の詳现に぀いおは、Power Queryを䜿甚しおActive Directoryからデヌタを取埗するいく぀かの䟋を分析したす。


りォヌムアップナヌザヌがい぀ログむンしたかを芋おみたしょう


ドメむンデヌタベヌス自䜓ぞのク゚リは、[デヌタ-新しいク゚リ-他の゜ヌスから-Active Directoryから]タブで䜜成されたす。



デヌタ゜ヌスを指定したす。


ドメむン名を遞択し、接続に必芁なデヌタを指定する必芁がありたす。 次に、オブゞェクトのタむプ、この䟋ではuserを遞択したす 。 プレビュヌりィンドりの右偎では、ク゚リが既に実行されおおり、デヌタのプレビュヌが衚瀺されおいたす。



リク゚ストを準備し、プレビュヌをお楜しみください。


以前は、「倉曎」ボタンをクリックしお必芁な列を遞択するこずで、リク゚ストを準備する必芁がありたした。 基本的に、これらの列はクラスであり、各列にはActive Directoryオブゞェクトの特定の属性のセットが含たれおいたすが、メむン列displayNameはそれ自䜓が属性です。 user 、 person 、 topおよびsecurityPrincipalクラスに焊点を圓おたす。 ここで、「拡匵」を䜿甚しお各クラスから必芁な属性を遞択する必芁がありたす-列芋出しに2぀の矢印の付いたアむコン




リク゚ストを展開したす。


次に、フィルタヌを構成したす。特に、ブロックされたアカりントを取埗しないようにするには、userAccountControl属性の倀を512たたは66048にする必芁がありたす。フィルタヌは環境によっお異なる堎合がありたす。 属性に぀いおは、 Microsoftのドキュメントをご芧ください。



フィルタヌを適甚したす 。


Excelは、デヌタ圢匏、特にlastLogonTimestamp属性の倀を誀っお定矩するこずがありたす。 そのような䞍幞が突然起こった堎合、「倉換」タブで正しいフォヌマットを蚭定できたす。

これで、userAccountControl列を削陀する必芁がありたす-ディスプレむにはたったく必芁ありたせん。 [ダりンロヌドしお閉じる]をクリックしたす。


タブレットが刀明したした。 たずえば、列の名前を読みやすい名前に倉曎したす。 自動デヌタ曎新を蚭定したす。


「プロパティ」の「デヌタ」タブで、テヌブルが開いたずきたたはタむムアりトによる自動曎新が蚭定されたす。



デヌタ曎新を構成したす。


曎新のセットアップが完了したら、人事郚たたはセキュリティサヌビスにテヌブルを安党に枡すこずができたす。誰がい぀システムに入ったかを知らせたす。


スポむラヌの䞋で蚀語「M」のコヌドを芁求したす。
let  = ActiveDirectory.Domains("domain.ru"), domain.ru = {[Domain="domain.ru"]}[#"Object Categories"], user1 = domain.ru{[Category="user"]}[Objects], #" " = Table.RemoveColumns(user1,{"organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomAttributes", "mailRecipient", "distinguishedName"}), #"  securityPrincipal" = Table.ExpandRecordColumn(#" ", "securityPrincipal", {"sAMAccountName"}, {"sAMAccountName"}), #"  top" = Table.ExpandRecordColumn(#"  securityPrincipal", "top", {"whenCreated"}, {"whenCreated"}), #"  person" = Table.ExpandRecordColumn(#"  top", "person", {"telephoneNumber"}, {"telephoneNumber"}), #"  user" = Table.ExpandRecordColumn(#"  person", "user", {"lastLogonTimestamp", "userAccountControl"}, {"lastLogonTimestamp", "userAccountControl"}), #"   " = Table.SelectRows(#"  user", each ([userAccountControl] = 512 or [userAccountControl] = 66048)), #" " = Table.TransformColumnTypes(#"   ",{{"lastLogonTimestamp", type datetime}}), #" 1" = Table.RemoveColumns(#" ",{"userAccountControl"}) in #" 1" 

アドレス垳を䜜成するか、䌁業ポヌタルがADず友達でない堎合の察凊方法


Active Directoryず組み合わせおExcelを䜿甚する別のオプションは、ADデヌタに基づいおアドレス垳を䜜成するこずです。 ドメむンが正垞である堎合にのみ、アドレス垳が関連するこずが明らかになりたす。


ナヌザヌオブゞェクトのリク゚ストを䜜成し、 mailのナヌザヌクラスを展開し、 telephoneNumberの 人物クラスを展開したしょう。 distinguishedNameを陀くすべおの列を削陀したす。ドメむン構造ぱンタヌプラむズの構造を繰り返しおいるため、 組織単䜍の名前は単䜍の名前に察応しおいたす。 同様に、セキュリティグルヌプはナニット名のベヌスずしお䜿甚できたす。


次に、 CN =ナヌザヌ名、OU =経理郚、OU =郚門、DC =ドメむン、DC = ruずいう行から、郚門名を盎接抜出する必芁がありたす。 これを行う最も簡単な方法は、「倉換」タブの区切り文字を䜿甚するこずです。



テキストを抜出したす。


区切り文字ずしお、 OU =およびOU =を䜿甚したす 。 原則ずしお、コンマで十分ですが、安党にプレむしたす。



区切り文字を導入したす。


これで、フィルタヌを䜿甚しお、ブロックされたナヌザヌやBuiltinなどの䞍芁なOUをカットしお、䞊べ替えを構成し 、デヌタをテヌブルに読み蟌むこずができたす。



サマリヌ衚のタむプ。


゚ヌゞェントや他のトレヌニングを導入するこずなく、ワヌクステヌションの構成に関するクむックレポヌト


次に、コンピュヌタヌでデヌタを受信しお​​、䟿利なテヌブルを䜜成しおみたしょう。 䌚瀟で䜿甚されおいるオペレヌティングシステムに関するレポヌトを䜜成したす。このためにリク゚ストを䜜成したすが、今回はナビゲヌタヌでコンピュヌタヌを遞択したす。



コンピュヌタヌオブゞェクトを芁求したす。


コンピュヌタヌず最䞊䜍の列クラスを残しお展開したす。




高床なリク゚スト。


必芁に応じお、サヌバヌのオペレヌティングシステムでのみレポヌトを䜜成できたす。 たずえば、属性operatingSystemたたはoperatingSystemVersionでフィルタヌを適甚したす。 私はこれを行いたせんが、䜜成時間の衚瀺を修正したす-私はその幎にのみ興味がありたす。 これを行うには、[倉換]タブで必芁な列を遞択し、[日付]メニュヌで[幎]を遞択したす。



コンピュヌタヌがドメむンに入力されたずきから幎を抜出したす。


ここで、䞍芁なdisplayname列を削陀し、結果をロヌドしたす。 デヌタの準備ができたした。 これで、通垞のテヌブルず同様に䜜業できたす。 最初に、[挿入]タブでピボットテヌブルを䜜成したす-[ピボットテヌブル]。 デヌタ゜ヌスの遞択に同意し、そのフィヌルドを蚭定したす。



ピボットテヌブルフィヌルドの蚭定。


これで、デザむンをカスタマむズしお結果を賞賛するこずができたす。



ADのコンピュヌタヌのピボットテヌブル。


必芁に応じお、[挿入]タブでもサマリヌチャヌトを远加できたす。 「カテゎリ」たたは「行」で、data- cnに operatingSystemを远加したす。 「デザむナヌ」タブで、奜きなチャヌトのタむプを遞択できたす。円圢のチャヌトをお勧めしたす。



円グラフ。


継続的な曎新にもかかわらず、Windows XPを搭茉したワヌクステヌションずWindows 2003を搭茉したサヌバヌの総数が非垞に倚いこずがはっきりずわかりたす。 そしお、努力するものがありたす。


スポむラヌの䞋でコヌドをリク゚ストしたす。
 let  = ActiveDirectory.Domains("domain.ru"), domain.ru = {[Domain="domain.ru"]}[#"Object Categories"], computer1 = domain.ru{[Category="computer"]}[Objects], #" " = Table.RemoveColumns(computer1,{"user", "organizationalPerson", "person"}), #"  " = Table.SelectColumns(#" ",{"displayName", "computer", "top"}), #"  computer" = Table.ExpandRecordColumn(#"  ", "computer", {"cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"}, {"cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"}), #"  top" = Table.ExpandRecordColumn(#"  computer", "top", {"whenCreated"}, {"whenCreated"}), #" " = Table.TransformColumns(#"  top",{{"whenCreated", Date.Year}}), #" 1" = Table.RemoveColumns(#" ",{"displayName"}) in #" 1" 

しかし、それだけではありたせん


Excelは䌚蚈甚のお気に入りのタブレットだけでなく、䜜成できるこずに泚意しおください。 熟緎したアプロヌチにより、圌は倚次元デヌタ分析OLAPキュヌブず行列を䜿甚した連立方皋匏の解法の䞡方を凊理できたす。 そしお、Microsoftからの蚌明曞を持っおいる人たちが壁にほこりをかぶっおいたす-3Dゲヌムでさえ混乱するオプションがありたす。 もちろん運呜ではありたせんが、倜は間違いなくかかりたす。


Excelを管理ツヌルずしおどう思いたすか 䞊蚘のいずれかを䜿甚したしたか



Source: https://habr.com/ru/post/J350582/


All Articles