PowerShell 7 で Get-AppxPackage のエラー

先日、Windows 10 21H2 環境にて、PowerShell 7 のアップグレードを行い、7.2.6.0 に更新したのですが、その後、Get-AppxPackage でエラーが発生。

PowerShell_Err1

なんですか?これ。
言われた通り、Import-Module Appx をやってみましょうか。

PowerShell_Err2

はて、何ですか、これ。
Get-Help では引けるようです。

PowerShell_Err3

で、GitHub のサイトに不具合情報がありました。
-UseWindowsPowerShell を付与せよとのことです。
やってみます。

PowerShell_Err4

なんか処理ができたっぽいですね。
では、再度、Get-AppxPackage をやってみます。

PowerShell_Err5

できました。
はやく、修正してくださいよ。
あっ、Windows 11 では –UseWindowsPowerShell  は使えないと書いてありました。

MSExchange ADAccess イベント 2937

もう今更ですが、Exchange パブリックフォルダーを削除した際によく見かけるイベントです。
なお、Exchange のバージョンは 2010 以降が該当します。

MSExchange ADAccess, Event ID: 2937
プロセス MSExchangeTransport.exe (PID=9356)。
オブジェクト [CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com]。
プロパティ [RemotePublicFolderMailboxes] が値 [contoso.com/Deleted Objects/PublicFolderMailbox DEL:d980f9a4-2014-4165-aad0-7ab91b35ef01] に設定されています。
これは Active Directory 内の Deleted Objects コンテナーをポイントしています。このプロパティは速やかに修正する必要があります。

上記プロセスは、Exchange で使っているものなら、何でも出ます。
パブリックフォルダーの削除で、そのデータベースを参照しているすべてのオブジェクトが変更されず、一部の情報が残ってしまったわけです。
この場合は、イベントログに出ている Active Directory オブジェクトを削除する、つまり、ADSI エディターで、削除されたパブリックフォルダーデータベースの参照を削除することでイベントを消すことができます。

対処方法

  1. Exchange PowerShell で RemotePublicFolderMailboxes のプロパティを確認しておきます
    Get-OrganizationConfig | Select RemotePublicFolderMailboxes
    今回のケースでは pFContacts という属性名になります
  2. ドメインコントローラーで ADSI エディターを起動します
  3. Configutation コンテキストを開きます (「既知の名前付けコンテキストを選択または入力する」から「構成」を選択する)
  4. 警告イベントに表示されているオブジェクトを辿り (上記ケースでは CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com です)、プロパティを開きます
  5. 属性エディターから削除されたパブリックフォルダーデータベースが記載されている属性を探します (今回は pFContacts)
  6. その属性の値を削除します
    なお、複数のパブリックフォルダーデータベースを使っている場合、全部消してはいけません

パブリックフォルダーデータベースが 1 つの場合には、
Set-Organization​Config -RemotePublicFolderMailboxes $null
でもよいです。
Exchange 系のサービスは特に再起動する必要は無いですが、可能であれば、再起動しておいた方が気分的にはいいかも。

Windows 10 で PSR (Problem Steps Recorder)が動かない

そうなんです。
動かないのです。(v1703 で非推奨ツールに格下げされた)
PSR とコマンド入力しても、うんともすんとも動きません。
でも、PSR.EXE はきちんとあります。
Microsoft もあれだけ、宣伝して使ってくださいってアナウンスしていたのに…。

でも、動かせますので、その方法を紹介します。非推奨ということを認識した上で使ってください

方法

  1. ローカルポリシーエディター(gpedit.msc)を起動します。
    ローカルポリシー1
  2. 管理テンプレート – Windows コンポーネント – アプリケーションの互換性 まで辿ります。
    ローカルポリシー2
  3. ここに [ステップ記録ツールをオフにする] という項目がありますので、これを [無効] の設定にします。
    ローカルポリシー_PSR
  4. ポリシーを変更したので、お約束の gpupdate /force を実行しましょう。
  5. で、再度、PSR を実行してみると、動きます。
    Win10_psr

何とも、人騒がせです。
サポートしていると、結構、便利で使うんですけどねぇ。

Microsoft Message Analyzer が消えた

残念ですが、2019/11/25 付けでリタイヤだそうです。
いきなり来ましたね。
さて、netsh でキャプチャーしたネットワークトレース etl をどうやってデコードするか。

ダウンロード用のリンクも消えました。
後継製品 / ツールは無しで、WireShark を薦めています。
あらら…。

追記
etl を pcap に変換するのってそこまで大変じゃなさそう。
ググると、結構ありますね。
で、使ってみて良さそうなのは、MS の中の人が作ってくれたものかな。

Windows 10 の新元号対応 – 続続報

さらに続報です。Windows 10 1809 用の累積更新プログラムがリリースされました。

これで Windows 10 の新元号対応用の累積更新プログラムが出揃いました。
他の OS 用のロールアップもまとめておきましょう。

何も問題がなければよいのですが。

Windows 10 の新元号対応 – 続報

待ちわびた新元号対応の累積更新プログラムがリリースされました。

思いつく確認ポイントを書いておきます。

  • レジストリを確認
    前回記事で和暦に関するレジストリに触れましたが、今回の累積更新プログラムをインストールする前に
    可能であれば、"2019 05 01" = "令和_令_Reiwa_R" を削除して、累積更新プログラムがきちんとレジストリに
    追加することを確認した方がいいかも。

新元号_レジストリ_更新

  • フォントを確認
    新元号対応で予定されていたフォントが更新されていますね。
    MS ゴシック / MS 明朝 / MS P ゴシック / MS P 明朝 / メイリオ / Meiryo UI
    游ゴシック / 游明朝 / Yu Gothic / UD デジタル教科書体 / BIZ UDP ゴシック / BIZ UDP 明朝

新元号_フォント_更新

IMEパッドで合字令和を確認

さて、累積更新プログラムを適用して、気が付いてしまったことがあります。

累積更新プログラムの適用前

(条件)2019/04 までの累積更新プログラムは適用済 and レジストリで新元号対応しておく

新元号対応含む累積更新適用前

累積更新プログラムの適用後

新元号対応含む累積更新適用後

なんか、累積更新プログラムの適用前の方が期待した動きだと思うのですが。

  • Addresses an issue that causes the DateTimePicker to display the date incorrectly in the Japanese date format. For more information, see KB4469068.
  • Addresses an issue that causes the Date and Time Settings control to cache old Eras and prevents the control from refreshing when the time enters the new Japanese Era. For more information, see KB4469068.
  • Addresses an issue that causes the Clock and Calendar flyout control to display the day of the week incorrectly mapped to a date in the month of the new Japanese Era. For more information, see KB4469068.

このどれかの修正の影響ではないかと。
今更になって、累積更新プログラムの適用前後で動作が変わるのって勘弁してほしいですね。
ただ、この理由ですが、「令和」に改元されるのは、5月1日なので、その前に令和を使うのは、ダメ。(公的文書も同様)
そのため、現在時刻 / 日付 が 5月1日前なのか、後なのかで、表示を切り替えていると解釈できます。
そういう情報も書いておいてほしいですよね。
アプリ屋さん、かわいそうすぎる。

Windows 10 の新元号対応

平成も残り、カウントダウン状態。
ここで、Microsoft の新元号対応をおさらい。(情報源は今まで参加した Microsoft の新元号対応セミナーです)

  • 2019 年 5 月 1 日時点で延長サポートを終了していない製品
  • 現時点で和暦に対応している製品
  • Unicode のみ対応し、S-JIS は対応しない(合字)
  • 新元号対応のみを目的とした 更新プログラムの提供はなく、累積更新プログラムのみで提供される

これを踏まえて、Windows 10 の新元号対応をまとめてみましょう。

Windows 10 のバージョン Home / Pro / Pro for WS の
サービス終了日
Enterprise / Education の
サービス終了日
1809 2020 年 5 月 12 日 2021 年 5 月 11 日
1803 2019 年 11 月 12 日 2020 年 11 月 10 日
1709 2019 年 4 月 9 日 2020 年 4 月 14 日
1703 2018 年 10 月 9 日 2019 年 10 月 8 日
1607 2018 年 4 月 10 日 2019 年 4 月 9 日
1511 2017 年 10 月 10 日 2017 年 10 月 10 日
1507 2017 年 5 月 9 日 2017 年 5 月 9 日
  • LTSB / LTSC はサービス終了になっていたいため、すべて新元号対応する。
  • Windows Server 2016 / 2019 は対応するが、Windows Server バージョン 1709 (半期チャネル) は未対応になる
    (2019/04/09 切れ)。

この表からもわかるように Home / Pro / Pro for WS の新元号対応は、1803 以降が対象となり、
Enterprise / Education は 1703 以降が対象になります。 ここで重要なのは、フォント含めた完全な新元号対応ってことです。 例えば、Pro / 1709 は、3 月、4 月に累積更新プログラムがリリースされていますが、2019 年 4 月 9 日にサービス終了となるため、フォント含めた最終版の累積更新プログラムは提供されないってことです。

例えば、Pro / 1709 (サービスが終了している)に Ent / 1709 の累積更新プログラムを適用するのはいけません。Microsoft はそのような行為を認めていませんし、サポートも受けられません。

そのため、Home / Pro / Pro for WS の 1709 以前のバージョンを使っている場合、新元号対応するには、まずは、1803 以降にバージョンアップする必要があります。
そもそも、なんで、フォントの話しになったかというと、和暦には、合字 というものがあるからなんです。

IMEパッド合字を確認

この 合字 を入れたフォントも新言語対応としてリリースする必要があります。

現時点での新元号対応予定フォント
MS ゴシック / MS 明朝 / MS P ゴシック / MS P 明朝 / メイリオ / Meiryo UI
游ゴシック / 游明朝 / Yu Gothic / UD デジタル教科書体 / BIZ UDP ゴシック / BIZ UDP 明朝

Unicode における新元号の合字の符号位置は、2018 年の夏頃から申請を初めたらしく、2018 年 11 月あたりに U+32FF で確定したとのことです。そして、U+32FF で確定しても ICU や CLDR とかで制定する必要があるので、これまた、かなりの時間を要することに…。
新元号の符号位置が、明治 / 大正 / 昭和 / 平成 からかなり飛ぶので、和暦の照合順序の実装は大変ですね。
符号位置が決まっても肝心な 元号 が決まっていないので、2019 年 4 月 1 日の発表まで待ち状態。長いですねぇ。
なお、令和が入った ICU 64.2 は 2019 年 4 月 17 日に、Unicode 12.1 は 2019 年 5 月 7 日が制定日 / 公開日になります。

縦書きグリフ
フォントが横書き合字と縦書き合字を持っているかどうか。
縦書き合字を持っていない場合には、レンダリングエンジンで回転させるのですが、その際、近似フォントにフォールバックすることもあります(デザインが変わる)。

Unicode のみの対応ってことになるのですが、文字コード対応については

  • Microsoft による独自拡張は行わない
  • Code Page 932 / 拡張文字を含む S-JIS における新言語対応は行わない
  • ISO-10646 / Unicode 標準の対応に準じた更新を行う

ということになりますので、S-JIS はやらないよと。

第一世代 S-JIS
: JIS78 or JIS83 + メーカー拡張 [ ㍾ ㍽ ㍼ ]が含まれている
: [ ㍻ ] は、JIS X 0208 JIS X 0212 には含まれない
第二世代 S-JIS
: 第一世代では互換性 / 相互運用が担保されないために、Microsoft が各メーカーと調整して
   マイクソロフト標準キャラクタセット (Windows-31J / Code Page 932) を作成 (JIS90、10646)

ちなみに、IME 辞書にも更新が入るらしいです。
A) Win 7 SP1 まで
B) Win 8 – Win 10 1803
C) Win 10 1809
A – C は辞書フォーマットが異なり、互換性が無い!

あらゆるところで、和暦に関するレジストリが公開されているので、今更感ありますが、一応、紹介。

新元号_レジストリ

[ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras ]
"1868 01 01" = "明治_明_Meiji_M"
"1912 07 30" = "大正_大_Taisho_T"
"1926 12 25" = "昭和_昭_Showa_S"
"1989 01 08" = "平成_平_Heisei_H"
"2019 05 01" = "令和_令_Reiwa_R"

なお、Windows OS、Office、.NET Framework 共に依存関係があるため、すべて最新に揃える必要があります。
Windows : KB4469068
Office  : KB4478844
.Net    : KB4477957

ちなみに、Windows 10 Version 1809 から、.Net Framework の累積更新プログラムは外出しされていますので、注意です。
平成 31 年 4 月末までに新元号対応を終了させたいとアナウンスされているので、そろそろ、フォント含めた累積更新が出てくるのではないでしょうか。

SQL Server に関して
SQL Server に対する新元号更新プログラムはないとのこと。(データベース機能には影響がない)
ただし、SQL Server 内部で .Net Framework を使っている機能は影響を受ける。
ストアドプロシージャや SQL CLR、SSRS、SSIS 等。
そのため、OS および .Net の新元号対応が必要になるため、結局、更新プログラムの適用が必要。
(特に SQL Server に接続するクライアントアプリは注意が必要)

OSの和暦表示

新元号への対応について
https://www.microsoft.com/ja-jp/mscorp/newera/default.aspx

2019 年 5 月の日本の元号変更に関する更新プログラム
https://support.microsoft.com/ja-jp/help/4470918/updates-for-may-2019-japan-era-change

Windows 用の日本の新元号対応更新プログラムについて – KB4469068
https://support.microsoft.com/ja-jp/help/4469068/summary-of-new-japanese-era-updates-kb4469068

.NET Framework 用の日本の新元号対応更新プログラムの概要
https://support.microsoft.com/ja-jp/help/4477957/new-japanese-era-updates-for-net-framework

日本の新元号に関する Office の更新プログラム
https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era

[経済産業省] 改元に伴う企業等の情報システム改修等への対応
https://www.meti.go.jp/policy/it_policy/kaigen/kaigen_taiou.html

Hyper-V 統合サービスの「ゲストサービス」

Hyper-V の統合サービスを見ると

Hyper-V_統合サービス

となりますが、ここの「ゲストサービス」って何?というのが今回ネタです。

を見ると、

Hyper-V ホストが仮想マシンとの間で双方向のファイル コピーを実行できるようにするためのインターフェイスを提供します。

とのこと。既定で無効なんですね。サービスコントロールマネージャーで見てみると

Hyper-V_統合サービスのサービス

ありました。
Copy-VMFile を使って、ホストマシンと仮想マシンとの間でファイルのコピーができるわけです。
使い方ですが、ホストマシン上の E:\Dotnet\ADO.NET\PoolingApp\Release\PoolingApp.exe.config というファイルを
仮想マシン “PC1 – Win10” の D:\work にコピーする場合は、こんな感じです。

Copy-VMFile "PC1 – Win10" -SourcePath "E:\Dotnet\ADO.NET\PoolingApp\Release\PoolingApp.exe.config" -DestinationPath "D:\work" -FileSource Host

注意点ですが、PowerShell を管理者権限で起動しておかないと、アクセス権が無い というエラーになります。

エクスプローラー上から GUI でファイル操作できると便利だと思うけどな。

Bot Builder SDK for .NET v4 を使ってみよう。

まずは、入門編から。
ネットで探してみても、いまいち、まとまったものが無いので、重い腰を上げて、自分で書いておこうと思う。
Visual Studio 2017 を使いますので、その準備をしておいてください。 (最新の 15.8 までアップデート)
Bot Builder のテンプレートとして、

が紹介されていることが多いですが、これはもう古いと思います。
今回は v4 ベースを使いたいので、こちらの方にアクセスして、vsix ファイルをダウンロードし、Visua Studio 2017 に組み込んでください。(2018/10/03 時点では、4.0.6.15 が最新です)

vsix をダブルクリックして、インストールしましょう。
[ツール] – [拡張機能と更新プログラム] を見ると、以下のようになっています。

botプロジェクトが拡張機能で準備できた

続いて、新規プロジェクトを見てみると、Bot Framework が追加され、以下のようになっています。

botプロジェクトの準備

で、このままにしておいて、今後は、Bot Framework エミュレーターをインストールしておきます。
以下の GitHub にアクセスします。

リリースサイトから、botframework-emulator-setup-XXXXX.exe をダウンロードしてインストールしておきましょう。
(2018/10/03 時点では、40025 が最新です)

では、早速、サンプルを作ってみましょう。
新規プロジェクトで、Bot Builder Echo Bot V4 を選択してみます。

BotBuilderEchoBotV4選択

このままでもビルド(.NET Core 2.0 SDK)できるのですが、今回、Visual Studio 2017 15.8 を使っているので、.NET Core 2.1 SDK を使うように変更します。

ターゲットフレームワークを変更

続いて、Bot Builder SDK を更新しましょう。プロジェクト [Bot Builder Echo Bot V41] を右クリックして、
[Nuget パッケージの管理] をクリックすると、更新プログラムがあることがわかります。

nugetで更新する

2018/10/03 時点では、v4.07 が最新です。
ちなみに、下記から個別に用意することもできますね。

では、ビルドしてみます。エラーもなく、成功するはずです。
デバッグ実行してみると、IIS Express で起動され、ブラウザが開くのですが、エラーになりました。
HTTP Error 502.5 – Process Failure ErrorCode = 0x80004005 : 0
イベントログにもしっかりとエラーが残っています。

Application ‘MACHINE/WEBROOT/APPHOST/BOT BUILDER ECHO BOT V41’ with physical root ‘E:\Developer\bot-dev\Bot Builder Echo Bot V41\Bot Builder Echo Bot V41\’ failed to start process with commandline ‘d:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\extensions\microsoft\web tools\projectsystem\VSIISExeLauncher.exe -argFile "H:\Temp\tmp3E79.tmp"’, ErrorCode = ‘0x80004005 : 0.

悲しい。
調べてみたところ、.NET Core 2.1 の最新版をダウンロードしてインストールすることで無事に動くことがわかりました。

上記サイトから、.NET Core 2.1 SDK (Build apps – SDK v2.1.403)をダウンロードしてインストールしました。

再度、デバッグ実行すると、無事に動きます!やったー。

EchoBotが動いた

この状態で、Bot Framework エミュレーター を起動して、チャットしてみます。
ソリューションエクスプローラーを見ると、BotConfigration.bot が生成されているので、このファイルを
Bot Framework エミュレーターに読み込ませて起動します。

Bot Framework エミュレーターを使う1

Bot Framework エミュレーターを使う2

Bot Framework エミュレーターを使う3

すると、Bot Framework エミュレーターが起動します。

Bot Framework エミュレーターを使う4

さあ、何かメッセージを入力してみましょう!

Bot Framework エミュレーターを使う5

おぉ、ちゃんとエコーしてるじゃないですか。すばらしい。

では、今回はここまで。