2017/03/23

Windows 10 のアクション センターにカスタム通知 (from PowerShell)

Windows PowerShell を使って Windows 10 のアクション センターにカスタム通知を表示する方法(の 1 つ)。PowerShell 1.0 から使えるらしい古臭い方法ですが、Windows 10 1507、1511、1607 でも、これでいけました。アイコン (.ico) ファイルは適当に用意してください(省略できないみたい)。

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$objNotifyIcon.Icon = "C:\Demo\icon\messageboxalert.ico"
$objNotifyIcon.BalloonTipText = "アクション センターへの通知テスト"
$objNotifyIcon.BalloonTipTitle = "通知テスト"
$objNotifyIcon.Visible = $True
$objNotifyIcon.ShowBalloonTip(10000)

アクション センターがアプリやシステムなどさまざまなソースからの通知を集約してくれることを利用した方法です。なお、Windows 8.1 以前の場合はタスクバーの通知領域の通知アイコンとしてメッセージがポップアップされます。




ちょっと応用(画面は Windows 8.1)。
別の応用(画面は Windows 10)。

参考:
Windows PowerShell Tip of the Week (TechNet)
[URL] https://technet.microsoft.com/en-us/library/ff730952.aspx

2017/03/22

Windows 10 & Server 2016 の BuildLabEx が正しいとは限らない件

Windows 10 や Windows Server 2016 の詳細なビルド番号 (ビルド番号.リビジョン番号) をコマンドラインから確認するために、私は次のように Get-ComputerInfo の WindowsBuildLabEx やレジストリの BuildLabEx 値を利用することが多かったのですが...

PowerShell の例:
PS C:\> (Get-ComputerInfo).WindowsBuildLabEx   
(注: Get-ComputerInfo は PowerShell 5.1 ~)

PS C:\> (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx
Cmd.exe の例:
C:\> REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx

WindowsBuildLabEx は正しい値を返さないこともあるようです。例えば、KB4015438 で 14393.969 になったのですが、 WindowsBuildLabEx は 1 つ前の 14393.953 を返します。以前、調査したときは winver.exe は HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion の CurrentBuild 値と UBR 値を参照していました。何かしらのスクリプトを作成するときは、BuildLabEx 値だけに頼らずに、こちらもチェックしたほうがいいかもしれません。

Windows Server 2016 の詳細なビルド番号をコマンドラインから確認したい (2016/10/14)

PowerShell の例:
PS C:\>
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild + "." +
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").UBR
関連して、こちらのスクリプトにも変更を加えておきました。

My Windows Update Script for Nano Server (2017/03/15)




Outlook の To Do バー > タスク リストにタスクが二重に表示される

デスクトップ版の Outlook 2016 アプリで、To Do バーのタスク リストにタスクが二重に表示されてしまうトラブルが発生。

昨日の午後に Office を更新したので、その影響かと思ってみたり、その後、Outlook.com に障害が発生したタイミング (UTC 17:15~19:30、現在は復旧したみたい)と重なったり、つい先日の Outlook.com の再接続設定 (https://go.microsoft.com/fwlink/?linkid=837697) が影響したのかと思ったりして、トラブル調査&復旧に時間がかかってしまいましたが...

よく考えたら、以前のバージョンでも経験ありのトラブル。対処方法は、Outlook をいったん終了し、ファイル名を指定して実行から「outlook /resettodobar」を実行。


Outlook.com のステータスは、個人用も Office 365 のサービス正常性で確認すればいいのかなぁ? (OneDrive はまだ障害発生中?)

Office 365|サービス正常性
[URL] https://portal.office.com/servicestatus

2017/03/21

XP の応答なしウィンドウは、本当に応答しないウィンドウ

先月、@IT さんの連載で、Windows Vista 以降の応答なしウィンドウは、ゴースト ウィンドウ(Ghost Window)で、“応答なし”ウィンドウの代わりに“応答している”という記事を書きました。

「応答なし」のウィンドウなのに“応答する”のはなぜなのか? 
 [URL] http://www.atmarkit.co.jp/ait/articles/1702/22/news010.html

PowerShell でゴースト ウィンドウを持っているのが、dwm (デスクトップ ウィンドウ マネージャー)だということを実証してみたわけですが、Windows XP のときも応答なしウィンドウはあったぞという声を耳にしました。念のため、Windows XP の応答なしウィンドウとの違いを見てみましょう。

連休明けの再起動注意報:KB4015438 (14393.969)

Windows 10 Anniversary Update & Windows Server 2016 向けに累積的な更新プログラム KB4015438 (14393.969) が配布されました。

3/15 の配布された KB4013429 (14393.953) の 2 つの重大な不具合が修正されるそうです。

たぶん要再起動!

March 20, 2017—KB4015438 (OS Build 14393.969)
[URL] https://support.microsoft.com/en-us/help/4015438

ダウンロードに結構時間がかかるかもしれませんが、Microsoft Update Catalog サイトで見ると x64 は 1GB 超え(1055.7 MB) のサイズなので、時間がかかるんだぁと思うのは間違いKB4013429 (1054.5 MB) がインストール済みであれば、ダウンロード サイズは差分の数 MB 程度のはず。もちろん、Microsoft Update Catalog からダウンロードして、手動でインストールする場合は、1GB ダウンロード必要ですけど。

参考:
Windows 10の「累積的な更新プログラム」の本当のダウンロードサイズは? (2/3) @IT
[URL] http://www.atmarkit.co.jp/ait/articles/1611/22/news013_2.html

2017/03/17

外出先の WSUS クライアントに Windows 10 の罠あり?

Windows Server Update Services (WSUS) のクライアントとして構成された Windows 10 コンピューターが、WSUS サーバーにアクセスできない環境にある場合、Windows Update の実行に注意が必要になることがあるかもしれません。

外出先などにいて、WSUS サーバーにアクセスできない場合、あるいは WSUS クライアントのポリシー設定が残ったまま、WSUS サーバーが撤去された場合、Windows Update で[オンラインで Microsoft Update から更新プログラムを確認します]をクリックせずに、[更新プログラムのチェック]ボタンをクリックすると、接続できないエラーから回復するのが厄介になる可能性があります。

2017/03/15

My Windows Update Script for Nano Server

いつも使っている Nano Server 用の Windows Update スクリプトを Script Center にアップしました。

[URL] https://gallery.technet.microsoft.com/scriptcenter/Windows-Update-for-Nano-1c85450e


なお、日本語版の Windows Server 2016 のインストールメディアから作成した Nano Server では、Windows Update がエラーで失敗します。日本語版のメディアから作っちゃったよどうしようという場合は、こんな感じでオフライン パッチ (この例は VHD 内の Nano Server インストール) の方法で更新することができます。

C:\work> DISM /Mount-Image /ImageFile:"C:\work\mynanojp01.vhd" /Index:1 /MountDir:"C:\work\mount"
C:\work> DISM /Image:"C:\work\mount" /Add-Package /PackagePath:C:\work\patch\windows10.0-kb4013429-x64_ddc8596f88577ab739cade1d365956a74598e710.msu"
C:\work> DISM /Unmount-Image /MountDir:"C:\work\mount" /Commit

関連:
Windows Update for Nano Server (TP5 向け、2016/05/04)
Windows Scripting: Windows Update をスクリプトから ( WindowsUpdate.ps1 ) (2010/07/05)
Windows Scripting: Windows Update をスクリプトから ( WindowsUpdate.vbs ) (2010/07/02)


3/22 追記)
WindowsBuildLabEx が正しいリビジョン番号を返さないことがあるので、ntoskrnl.exe のバージョンリソース情報からの値と、HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion の下の CurrentMajorVersionNumber、CurrentMinorVersionNumber、CurrentBuild、UBR の値から生成したものも出力するように変更しました。

$CurrentWindowsBuildLabEx = (Get-ComputerInfo).WindowsBuildLabEx
$CurrentNtoskrnl = ((Get-ItemProperty C:\Windows\System32\ntoskrnl.exe).VersionInfo).ProductVersion
$CurrentMajorVer = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentMajorVersionNumber
$CurrentMinorVer = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentMinorVersionNumber
$CurrentBldNum = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild
$CurrentRevNum = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").UBR

Write-Host "-----------------------------------------------------------------------"
Write-Host "Current Build Information ..."
Write-Host $CurrentWindowsBuildLabEx "(from WindowsBuildLabEx)"
Write-Host $CurrentNtoskrnl "(from ntoskrnl.exe Version Resource)"
Write-Host $CurrentMajorVer"."$CurrentMinorVer"."$CurrentBldNum"."$CurrentRevNum "(from HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion)"
Write-Host "-----------------------------------------------------------------------"