TEMTECOMAI ORTHOSTATIC HYPOTENSION

元ダメプログラマで現ダメ中間管理職の駄文

April 2018

警察です、ここの事業所に Aさんという方はいますか?

お調べしますね。 ここの事業所には W1 と W2 と W3 の 3つ事業本部が所属しています。
どの事業本部をお調べしますか? W1 ですね。
お調べしますね。 W1 事業本部には 4つの部がありますね。
・・・
・・・
・・・
・・・
Aさんはここの事業所ので所属はなく、ここの事業所の W3事業本部の  X5部の Y2課の Z1係の所属ですね。
これが Z1係の従業員リストです。 どうぞ。

警察です、ここの事業所の全従業員のリストをください

はいどうぞ、全従業員です。

たらい回しもイヤだ。 かといって全部から調べるのもイヤだ。 というかハッキリと答えてほしい

Get-ADGroupMember -Identity <グループ名>
これで取れるのは指定したグループに直接参加しているユーザーやグループの一覧なので、参加しているグループのメンバーの名前はでてこない。
Get-ADGroupMember -Identity <グループ名> -Recursive
これで指定したグループに参加しているグループに参加しているグループに参加しているメンバーのように間接的に参加しているメンバー全員をリストアップできる。
でも  YES か NO で答えが知りたい。

Get-ADGroupMember は Microsoft.ActiveDirectory.Management.ADPrincipal 型のオブジェクトか、その配列を返すので DistinguishedName とか SamAccountName とか SID とか持っているようです。
比較側のユーザーは普通に Get-ADUser で取得。 これももちろん同じプロパティを持ってる。
(Get-ADGroupMember -Identity <グループ名> -Recursive | Select-Object -ExpandProperty DistinguishedName) -Contains (Get-ADUser -Identity <ユーザー名>).DistinguishedName
これで Get-ADGroupMember から返ってきた DistinguishedName の配列と Get-ADUser から返っていた DistinguishedName を比較でき、含まれているかどうかを True / False で調べられるようになった。
本質を理解していないのでイロイロ遊んでみたら、Get-AdUser 側は DsitinguishedName を引き合いに出さなくても行けました。
(Get-ADGroupMember -Identity <グループ名> -Recursive | Select-Object -ExpandProperty DistinguishedName) -Contains (Get-ADUser -Identity <ユーザー名>)
そういうものなのかと理解したつもりになって、ついでに引数名 -Identity も省略してみたけど、これでも行けますね。 -Identity はデフォルトの引数だったかね。
(Get-ADGroupMember <グループ名> -Recursive | Select-Object -ExpandProperty DistinguishedName) -Contains (Get-ADUser <ユーザー名>)
さらに冒険してみた。
Select-Object でプロパティ展開する部分は -ExpandProperty を使うのだけれど、文字が長いとか -ExcludeProperty と間違うとか、意外に嫌われているようで、Select-Object の替わりに ForEach-Object を使う事もできるんだそうな。
(Get-ADGroupMember <グループ名> -Recursive | ForEach-Object DistinguishedName) -Contains (Get-ADUser <ユーザー名>)
奥が深いというか、、、

気づいたら %UserProfile% フォルダーの中にドットから始まる名前のフォルダーがいくつもできてます。
フォルダーだけじゃなく、SQL Server の MDF ファイルなんかもあったりして、気が付かないうちに賑やかになっていました。
昔はプロファイル フォルダーの直下に勝手に物を置いちゃいけないと思い込んでました。
プロファイルの下ならデスクトップやマイ ドキュメントのフォルダーの中に置け、と。


.config / .dotnet / .nuget / .omnisharp / .vs / .vscode
%UserProfile% の下に 6つもあります。

一方、ドットから始まるフォルダーを自分で作る場合、例えば ".hoge" とか入れて確定すると 「ファイル名を入力してください。」 と怒られてしまいます。
こういう場合は .hoge. というように、フォルダー名の最後にもドットを入れると、確定後は .hoge になってくれます。

VSCode で Markdown を書く際に独自に用意した CSS を利用する方法。
Web で調べても調べても (少なくとも) 現行バージョンの VSCode では間違っているっぽい書き方らしく、絶対に CSS ファイルを読み込んでくれませんでした。


まずはワークスペースありきだそうです。
私の場合は PowerShell のスクリプトを作る過程で Markdown ドキュメントも書くので、スクリプト編集用のフォルダーを作り、そこを VSCode のワークスペースとする。
この配下に適当なフォルダーを作り、CSS ファイルを置く。
ユーザー設定またはワークスペースの設定に markdown.styles の設定を書く。


愚弟的には、E:\Scripts をワークスペースとした場合
その中に ".markdownStyle" というフォルダーを作った。(ドットから始まる必要全くなし)
ユーザー設定に
"markdown.styles": [
    ".markdownStyle/markdown.css"
],
などと書く。
ワークスペースの設定に書く場合はこうなりました。
{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {
        "markdown.styles": [
            ".markdownStyle/markdown.css"
        ],
    }
}
このワークスペースってやつは別のツリーにあるフォルダーも論理的に含めることができるらしく、いろんなフォルダーをワークスペースに取り込んでいくと "folders" のセクションがにぎやかになっていくのでしょうかね。

Windows 2000 の時からエクスプローラーに備わっていた、Active Directory のユーザーやコンピューターを簡易的に検索するダイアログです。
Windows 10 もエクスプローラーで [ネットワーク] を選ぶとリボンに [ネットワーク] タブが出てきて、その中にある [Active Directory の検索] というボタンでダイアログが出る。
Active Directory 検索ダイアログ

Active Directory 検索

個人的には自作のショートカット ファイルを作り、そいつをタスクバーにピン留めしています。
C:\Windows\System32\rundll32.exe dsquery.dll,OpenQueryWindow
で、[表示] -> [列の選択] で検索結果一覧に表示する項目を選べまして、この中に "社員 ID" という物があるのですが、ユーザーを検索してもこの列は空欄のままでございます。 ユーザー アカウントの EmployeeNumber と EmployeeID に社員番号を仕込んであるので表示されてもいい物はずなのですが。
このツールの [社員 ID] は Active Directory ユーザーアカウントの EmployeeID ではないのだろうか。。。

と数年間悩んでいたのですが、検索場所の指定で初期値 「全部のディレクトリ」 となっているところを自分のドメインを指定して検索したら結果に社員 ID も表示されました。
ディレクトリ全体を検索する場合は取り出す属性を絞ってるんでしょうかね。
何はともあれめでたしめでたし。

↑このページのトップヘ