TEMTECOMAI ORTHOSTATIC HYPOTENSION

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

警察です、ここの事業所に 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 も表示されました。
ディレクトリ全体を検索する場合は取り出す属性を絞ってるんでしょうかね。
何はともあれめでたしめでたし。

今更ながら VBA の話。

ワークブックのシートをセパレートし、各シートを独立したブックとして保存するマクロを組んでいて気が付いた。
worksheet.Copy() メソッドや worksheet.Move() メソッドで引数を省略して 「新しい未保存のブックが自動的に作成され対象シートがコピーまたは移動する」 ということをになるのだけれど、このメソッドたちは新たに作られらブックの Workbook オブジェクトを返してくれない代わりに、新しいブックが自動的にアクティブになるらしいです。

つまり
Dim newBook As Workbook
Set newBook = currentSheet.Copy()
newBook.SaveAs "hogehoge"
ではなくて「新規作成されたブックは自動的にアクティブになる(はず)」 という仕様を信じ、
currentSheet.Copy()
Dim newBook As Workbook
Set newBook = ActiveWorkbook
としなければならないようです。
多分裏切られたことはないけれどできれば使いたくない ActiveWorkbook です。
まるで 「鉄棒競技で手を放し、練習通りにクルクル回れば練習通りの場所に棒がある」 みたいな。

おもわずマイクロソフトのコミュニティに投稿しちゃった事案でもあります。
よくある 「〇〇を〇〇したいというわけですね」 てきなやつ。
ようやくマイクロソフトからも復旧方法がアナウンスされた。
Windows devices may fail to boot after installing October 10 version of KB4041676 or KB4041691 that contained a publishing issue
どうやら症状に応じて 3つの選択肢に分かれるみたいですが、うちの場合は 3つ目に書いてあるケースが該当した。

WSUS で Windows Update を管理している環境 (主に法人でしょう) において発生する現象とのこと。
マイクロソフトの Windows Update サービスからだと発生しない。
  1. Windows 10 (Ver. 1703 および Ver. 1607) と Windows Server 2016 用の 2017年10月10日配信 セキュリティ更新プログラムを適用
  2. 再起動をすると Windows が起動できない。
  3. ついにはブルースクリーンが出る。
  4. そんで自動的に再起動して自動復旧画面が表示される。
  5. アップデート前の復元ポイントから復旧しようとしても、待たされた挙句にエラーで復旧不可能。

まずは復旧させます

自動修復画面で [詳細オプション] をクリックする。
[トラブルシューティング]→[詳細オプション]→[コマンド プロンプト] をクリックする。
このマシンは BitLocker で C ドライブを暗号化していたので、ここで BitLocker の回復キーを入力する。
コマンド プロンプトが起動する。
以下のコマンドを打って [Enter] キー。
reg load hklm\temp c:\windows\system32\config\software
reg delete “HKLM\temp\Microsoft\Windows\CurrentVersion\Component Based Servicing\SessionsPending” /v Exclusive 
該当するキーがなければエラーが表示されるだけなので大丈夫。
reg unload HKLM\temp
ここからが本番
dism コマンドを使い、保留状態になっているパッケージを削除する操作。
次のコマンドでパッケージの一覧を表示させる。
dism.exe /image:c:\ /get-packages
警告なんかも表示されながら、ずらずらっと結果が表示される。
最後の 3つぐらい、「状態 : インストールの保留中」 となっているものがあったので、これらのパッケージを削除する。
dism.exe /image:c:\ /remove-package /packagename:<package name>
<package name> の部分は先ほど出力されたリストの 「パッケージ ID」 の値を当てはめるのだけれど、先ほどの出力結果をマウスで範囲選択してコピペすれば楽に処理できる。
「状態 : インストールの保留中」 のパッケージ分だけ繰り返し、最後にコマンド プロンプトを閉じる。
「オプションの選択」 画面になるので [続行] をクリック。
Windows ロゴが表示され、その下にクルクルが表示される。
しばらく待たされるのですごく心配になる。
画面が真っ暗になる。 (さらに心配になる)
クルクルのマウス ポインターが表示され、安心する。
ブルーの背景になる。 (またしても心配になる)
「更新プログラムを構成しています」 が表示され、安心する。
なかなか待たされる。
「再起動しています」 との表示だが、なかなか再起動してくれない。
再び 「更新プログラムを構成しています」 になる。
しばらく待って 100% の表示になる。
ログオン画面が表示される。
めでたく復旧。

原因

今月は 「累積更新プログラム」 と同じ KB 番号の 「差分更新プログラム」 というものもなぜか配信されてきてしまい、両方の更新プログラムを適用してしまった PC がこの症状に陥るとの事。
具体的には、
  1. 2017-10 x64 ベース システム用 Windows Server 2016 の累積更新プログラム (KB4041691)
  2. 2017-10 x86 ベース システム用 Windows 10 Version 1607 の累積更新プログラム (KB4041691)
  3. 2017-10 x64 ベース システム用 Windows 10 Version 1607 の累積更新プログラム (KB4041691)
  4. 2017-10 x86 ベース システム用 Windows 10 Version 1703 の累積更新プログラム (KB4041676)
  5. 2017-10 x64 ベース システム用 Windows 10 Version 1703 の累積更新プログラム (KB4041676)
といういつもの顔ぶれの他に
  1. 2017-10 x64 ベース システム用 Windows Server 2016 の差分更新プログラム (KB4041691)
  2. 2017-10 x86 ベース システム用 Windows 10 Version 1607 の差分更新プログラム (KB4041691)
  3. 2017-10 x64 ベース システム用 Windows 10 Version 1607 の差分更新プログラム (KB4041691)
  4. 2017-10 x86 ベース システム用 Windows 10 Version 1703 の差分更新プログラム (KB4041676)
  5. 2017-10 x64 ベース システム用 Windows 10 Version 1703 の差分更新プログラム (KB4041676)
という 2セットが配信されてしまい、対象 OS にて累積と差分の両方を食べてしまった。

すでに累積更新プログラムはマイクロソフトによって 「期限切れ」 とされているため、WSUS の同期を行えば配信が停止される。

こんな現象があるなんて気づかなかった。 今まで作ってきた数多くの表は大丈夫だったろうか。。。

Microsoft サポート情報

Excel でハイパーリンクを設定した後に並べ替えるとリンク先が変更される
https://support.microsoft.com/ja-jp/help/410238

今まで数多くの表を作ってきたが、その中にこの条件を満たしてしまっている物はなかっただろうか・・・あったんじゃないかなぁ。

紙をスキャンして作った PDF ファイルを管理するために Excel で管理表を作り、各行に PDF ファイルへのハイパーリンクを仕込むケース、きっとあるよね。

既にハイパーリンクが設定されている Excel の表で並び替えをすると、ハイパーリンクが解除されたり、どこか別のセルに移っちゃったりと、それはもう滅茶苦茶になるらしい。
上記のサポート情報ページにある再現手順セクションにある結果がエグイこと。

原因は開示されてないよ

再現手順と回避策までは書いてあるけれど、原因までは説明されていない。
「マイクロソフト製品の問題として認識している」 とまでは書いてある。

ちょっと考えてみた。

VBA のオブジェクト モデルで考えると、一つの Excel ファイルである Workbook オブジェクトは、複数のワークシートを表す Worksheets コレクションを持っている。
Worksheets コレクションは、1枚のワークシートを表す Worksheet オブジェクトの集合体。
単体の Worksheet オブジェクトは、複数のセルを表す Cells コレクションを持っている。
Cells コレクションは一つのセルを表す Range オブジェクトの集合体。(ちょっと違うけど)

現在のブックの一番左側のシートのセル A10 の文字を変更するには
ThisWorkbook.Worksheets(1).Cells(10,1).Value = "hoge"
てな風に書く。(もちろん Range でやる場合もあるけれど)
セルにハイパーリンクを設定する場合も、作り手の感覚的には 「とあるセルにハイパーリンクを設定する」 って感じなので、
ThisWorkbook.Worksheets(1).Cells(10,1).SetHyperlink(アドレス, 表示文字列)
みたいに想像するけれど実際は違うらしい。(使ったことないので今回初めて知った)
ThisWorkbook.Worksheets(1).Hyperlinks.Add(セル番地, アドレス, 表示文字)
みたいな感じなんだと。(実際はもう少し引数があるけど)

びっくりポイントがいくつか。

  • ハイパーリンクはセルのプロパティからではなく、シートごとの Hyperlinks コレクションから操作する
  • Hyperlink オブジェクトは 「どこのセルで使われているのか」 を保持する Range というプロパティを持っている
  • Hyperlink オブジェクトは 「セルに表示する文字列 (クリックする対象の文字列)」 を保持する TextToDisplay というプロパティを持っている

あらやだ、セルの子分じゃないじゃん。 完全に独立してるじゃん。 というかセルに表示する文字まで握っちゃってるじゃん。
これを踏まえると、セル側の都合で並び替えをしちゃうと Hyperlink が追従 (各ハイパーリンクが持つ Range プロパティの値をソート後のセル番地に変更する) してないんじゃないかな、なんて想像をしちゃうのだが、先のサポートページの再現ドラマではもっとえげつない結果になっているので予想は外れているようだ。
というか、Excel 2016 で試してみたら正常に並び替えができてたし。
Excel 2010 では再現するが、Excel 2016 では解消済みってことか。
「最新のバージョンにしてください」 の一言で解決する話かよ。
もちろんそんな事を軽々しく言えればの話だが。

DELL の Precision 7510 というノート PC

BTO で 1st. HDD を 256GB SSD に交換、さらに 2nd. として 1TB HDD を追加。
さらに Windows 10 からのダウングレード権を使って Windows 7 Professional x64 がプリインストールされた状態で導入。
せっかく Windows 7 プリインストール状態で届いたものを 「やっぱり Windows 10 で使いたいから」 という要望があったため、PC に付属していた Windows 10 のメディアを使ってセットアップをすることにしたのだが、これにだいぶ苦労しましたよ、というお話。

一番の要点から言うと、DELL Precision 7510 に付属している Windows 10 のメディアでは SSD にインストールできないって話。 インストール途中のパーティション選択画面が出てこないって話。
SSD にインストールしたい場合は Microsoft のメディア作成ツールを使って取得した Windows 10 の iso ファイルを使いなさい、と。

DELL のサポートに電話して聞いた話だから確かです。
DELL の製品サポートでダウンロードできる Windows 10 のリカバリー イメージは PC に付属しているメディアと同じものとのこと。
続きを読む

2017年3月の Windows 10 累積的な更新プログラム KB4013429 は Active Directory 管理センターがクラッシュする件に対応しています。

KB4013429

Addressed issue where the Active Directory Administrative Center (ADAC) crashes when attempting to modify any attribute of any user account in Active Directory.
累積的な更新プログラムの一覧の日本語ページにはまだ掲載されていないようですが英語版のページには掲載されていますね。
まずはよかったよかった。

アカウント情報を編集して更新しようとすると Active Directory 管理センターが不明なエラーを発して落ちてしまう問題の原因が分かった。
以下は先週末自宅に引きこもって実験した結果。

まずは手順

  1. Windows 10 Enterprise 評価版を使って VM を作成。 (Windows 10 Version 1607)
  2. 作成した VM を Active Directory に追加。
  3. RSAT を VM にインストール。
  4. Active Directory 管理センターが正常に使えることを確認。
  5. Windows Update で OS を最新状態にする。
  6. Active Directory 管理センターが異常終了することを確認。
  7. 「インストールされた更新プログラム」 から累積的な更新プログラムを削除。
  8. Microsoft Update カタログから一つ前の累積的な更新プログラムをダウンロードしてインストール。
  9. Active Directory の動作を確認。
  10. 以下 7 から 9 を繰り返し、Active Directory 管理センターが正常終了するポイントを見つける。

結果、2016年12月13日公開の累積的な更新プログラム 「KB3206632 (14393.571)」 をインストールすると Active Directory 管理センターが異常終了することが判明。
その少し前、2016年12月9日に公開された 「KB3201845 (14393.479)」 までにとどめておけば良い。

残念ながら最新の累積的な更新プログラムである 2017年1月10公開の 「KB3213986 (14393.693)」 でもこの現象は継続中。

【参考】
Windows 10 用のリモート サーバー管理ツール (RSAT) のダウンロード
https://www.microsoft.com/ja-JP/download/details.aspx?id=45520
Microsoft Update カタログ
https://catalog.update.microsoft.com/v7/site/home.aspx
Windows 10 バージョン 1607 (64bit) と Windows Server 2016 の累積的な更新プログラム一覧
https://support.microsoft.com/ja-jp/help/4000825

Windows 10 Professional にインストールした RSAT の Active Directory 管理センター (略して ADAC っていうのかな?) で不明なエラーが頻発して困っている。

Windows 10 にログオンして ADAC を利用している Windows アカウントは対象 AD のアカウント オペレーターの権限を持っている。
作業対象のアカウントの属性値などを変更して上書き保存しようとすると 「不明なエラーが発生しました」 となる。
ちなみに結果は反映されている。

イベントログには次の二つのエラーが記録されている。
--------
ソース: .NET Runtime
イベント ID: 1026
アプリケーション: dsac.exe
フレームワークのバージョン: v4.0.30319
説明: ハンドルされない例外のため、プロセスが中止されました。
例外情報: System.ComponentModel.Win32Exception
--------
ソース: Application Error
イベント ID: 1000
障害が発生しているアプリケーション名: Dsac.exe、バージョン: 10.0.14393.347、タイムスタンプ: 0x57f86637
障害が発生しているモジュール: KERNELBASE.dll、バージョン: 10.0.14.393.479、タイム スタンプ: 0.582588e6
例外コード: 0xe0434352
--------

この PC には先に Windows 10 用の RSAT をインストールし、そのあとの機会に Visual Studio Communication 2017 RC を入れ、調子が悪いので RSAT を再インストールしている。
別の Windows 10 PC に入っているdsac.exe のバージョンが微妙に違うが、これは RSAT をインストールした時期による違いか。

ということは Visual Studio Community 2017 RC が影響してるのか?
一応 RC なら運用環境の PC でも問題ないってことになってはいるが、とはいえ RC は RC であり RTM じゃぁない。
というところが原因なのかな。。。
エラーを回避するため久しぶりに Active Directory ユーザーとコンピューターを使って作業をしたけれど、久しぶりだと使いづらいなぁ。。。

浦島太郎状態。


今も MIDI 機器同士や  PC と接続するためのインターフェイスは MIDI 端子ってことないよね?
「サウンドブラスター互換」 とか言うサウンドカードが必要とか言わないよね?
とうなの? 最近

楽器側のインターフェイス、やっぱり MIDI なの?
PC 側が USB と MIDI の変換プラグ使うとかなの?

それともお互いに USB 端子なの?

会社帰りにフラッと飲む。

自宅を公開ってことか。

それとも自宅を居酒屋にするってことか。

Apple ID のパスワードを変更する際に訊かれる秘密の質問
なぜか毎回正解することができないいので、秘密の質問をリセットしなければならない。
毎度毎度、秘密の質問とパスワードを更新してるってわけさ。

なぜ正解できなかったのかは質問をリセットする時になって気付かされる。
答えの最小文字数制限があるわけさ。
「韓国」 って設定しようとするとダメって言われる。
「かんこく」 って設定する。 「ひらがなで回答しよう」 って心に誓う。
で数ヶ月後に 「韓国」 って回答する。
回答時には 「2文字は少なすぎます」 とかいうヒントはくれない。 「答えが違います」 とだけ言われる。
しかも秘密の質問は 2問同時に出題され、2問同時に回答しなきゃならない。
さっきの調子で間違ってたとしても 「2問のうちどちらか、または両方間違っています」 とかぬかしやがる。
そして何パターンか試す。
気力が尽きて 「秘密の質問をリセットする」 という最後の手段を選択するわけさ。

そして質問を設定する画面で質問の一覧を見て思うわけさ。
なんだこの質問群は。。。

両親が初めて出会った町の名は?
憧れの職業は?
好きな絵本の題名は?
初めて映画館で観た映画は?
小学生の時に好きだった先生の名は?
学生時代に好きだった映画スターや登場人物の名は?
学生時代に好きだった歌手またはバンドの名前は?
初めて覚えた料理は?
初めて飛行機で行った場所は?

質問を選び、答えをセットする段階でもう一つ思い出す。
最小文字数。
映画スターの名前はアルファベットがいいのか? それともカタカナか? カタカナの場合スペースで区切るか? 中点で区切るか?


秘密の質問なのだからユーザーに質問文も作らせてほしいと思う。
てかやっぱり必要ない機能だと思う。

初めて覚えた料理は?
インスタントラーメンなんじゃねーの?

↑このページのトップヘ