Windows」カテゴリーアーカイブ

Windowsのサインイン(RDP)が異常に遅い場合の対処方法

昔から運用しているHyper-Vで仮想化されたWindows Server 2019環境で、突然RDPが出来なくなる事象が発生した。
正確には、ID/PASSの入力は通り、画面は開くのだが、ずっとWindowsのサインイン時の背景画面のまま何も動かず、数分するとそのままRDPのウィンドウが閉じてしまう。
Hyper-V Managerからなら接続できるが、それでも数十分は上記の背景画面のまま待たないといけない状態である。

ログにも何も出ておらず、Microsoft社に問い合わせても原因不明だったので、しばらく運用回避していたが、先日ようやく対処方法が分かったので、備忘としてここに記載する。

【対処法】
1. Hyper-V Manager等で何とかサーバーに入る。
2. ローカルグループポリシーを開く。(スタートメニューを開き「gpedit.msc」と入力してEnter)
3. [コンピューターの構成]-[Windowsの設定]-[セキュリティの設定]-[ローカルポリシー]-[セキュリティオプション]を開く。
4. [対話型ログオン:最後にサインインしたユーザーを表示しない]を有効にする。

どうもユーザー数が多い環境で生じやすい傾向にあるようだ。
推測だが、ユーザーの検索か何かで時間が掛かってしまっていると思われる。

試用版Windowsを自動延長しながら使う

仕事柄、動作確認用に試用版Windowsを使うことが多い。
試用版はその利用期間が制限されているが、下記のように「slmgr -rearm」コマンドを実行すれば期間の延長が可能である。
(勿論、その延長にも上限回数がある。)
https://www.atmarkit.co.jp/ait/articles/1005/28/news108.html

長期間使う場合は延長が必要になるが、ついついうっかり忘れてしまうことがある。
期限が切れて一定時間経つとシャットダウンされてしまうので、お叱りを受けながら起動、延長、再起動の操作をする羽目になる。
そこで、自動で延長を行うScriptを作成した。

ちょっと強引だが、有効期限状態を取得し、期限切れを検知したら延長と再起動を行う。
期限が切れていなければ何もしない。

これをタスクスケジューラで5分毎ぐらいで実行させれば良い。
ただし、日本語版でしか動作しないのでご注意を。

別に認められた延長期間内で使うことを便利にするだけのScriptなので問題は無い・・・筈・・・

Google Chromeで他アプリケーションを開くときにポップアップを表示しないようにする

Google Chromeから.xlsxファイルなどを開く際、デスクトップ版Excelで開こうとすると以下のようなポップアップが出る。

業務上頻繁にこれを使う必要があるので表示しないようにしてほしいという問い合わせがあった。
調べてみたところ、以下の手順で対応が出来た。

  1. Chromeを閉じる。
  2. 下記のコマンドを管理者として実行する。
  3. Chromeを起動し、ファイルを開く。
  4. ポップアップに「このタイプのリンクは~」というチェックボックスが表示されるので、これにチェックを入れて開く。
  5. 以後、ポップアップが表示されなくなる。

参考:http://windowsbulletin.com/ja/fixing-always-open-links-of-this-type-in-the-associated-app-missing-in-chrome/

なお、ポップアップを再度表示させたい場合はレジストリを戻すのに加えて手順が必要になる。具体的には以下の通り。

  1. Chromeを閉じる。
  2. エクスプローラで[%HOMEPATH%\AppData\Local\Google\Chrome\User Data\Default]を開く。
  3. [Preferences]をテキストエディタで開く。
  4. 以下のような記述部分があるので、この[false]を[true]に変更し、上書き保存する。(ここでは許可したアプリケーションをExcelとする。)
    修正前:”protocol_handler”:{“excluded_schemes”:{“ms-excel”:false}}
    修正後:”protocol_handler”:{“excluded_schemes”:{“ms-excel”:true}}
  5. レジストリを戻す。
  6. 元に戻っているか確認する。

プロジェクトマネージャーって仕事の難しさと面白さが漸く分かってきた気がする。
そして、そもそもプロジェクト自体を定義できていないことに気付いた。
自分には足りないものだらけだ。30歳にして本格的に勉強しないと行けないと気付いた。
この一ヶ月で結果を出そう。そうしよう。

タスクスケジューラを日本時間午前9:00に設定してはいけない

サーバーのディスク使用量などの情報を月次でメール配信するタスクを設定しているのだが、去年後半辺りから挙動がおかしくなってきた。
月末に起動するように設定しているのに、何故か月末の一日前にも起動してしまう・・・

結論から言うと、これはWindowsのバグである。
以下、引用だが、以下の条件が揃っている場合、起動すべき日の前日にもタスクが起動してしまう。
(起動すべき日にも起動する。つまり、二回起動する。)


以下の 4 つの条件がすべて該当する場合に本事象は発生いたします。
● Windows のバージョンが以下であること。
– Windows 8.1 / Windows Server 2012 R2
– Windows 10 Enterprise 2016 LTSB / Windows Server 2016
– Windows 10 Version 1903
● 2019 年 3 月 第 3 週以降の更新プログラムが適用されていること。
※ Windows 10 Version 1903 はリリース段階から該当します。
● 毎週や毎月の指定された曜日に実行するタスクであること。
● タスクの実行時間が日本時間 AM 9:00 (協定世界時 0:00) であること。

引用元: 曜日指定のタスクが前の曜日に実行されてしまう問題について


多分、世界標準時で0:00に実行することで前日と当日の区別がうまくできていないのだと思う。しらんけど。


マネージャーになって工数を意識するようになると、仕事って根性でやってはいけないんだなぁと今更思うようになった。
今までお世話になったマネージャーの方には頭が上がらない。

Windows Update KB4475591で凄く困った

タイトルは4年ぐらい前に書いた記事のオマージュだったりする。

2019/10頃から、Excelでネットワーク上の同じファイルに対し、複数回保存を行うと、
「別のユーザーがサーバー側のコピーを更新したため、今の状態では変更した内容をアップロードすることができません。」
というメッセージが表示される事象が頻発するようになった。

結論から言うと、これはKB4475591の影響である。
Microsoft社に問い合わせたところ、KB4484198をインストールすると解決する模様。
参考: https://support.microsoft.com/ja-jp/help/4484198/november-18-2019-update-for-office-2016-kb4484198

直ぐに適用が難しい場合、アップロードセンターの設定画面を開き、「ファイルを閉じたときに Officeドキュメントキャッシュから削除する」のオプションにチェックを入れると回避できるようになる。
エラーの原因は、クライアントのキャッシュとサーバー上のファイルとの不整合のようだ。
参考: https://social.msdn.microsoft.com/Forums/en-US/2bb8613d-5580-441c-9049-1a43825cedbf/upload-failed-your-file-was-not-uploaded-because-your-changes-can-not-be-merged-with-changes-made?forum=officegeneral

ちなみに、「クイック実行」でインストールしたOfficeではWindows UpdateによってOfficeに更新が入らないので、この問題は発生しない。
MSI形式でダウンロードしたOfficeにだけ発生する。
つまり、ボリュームライセンスを買っているような大企業とかでしか発生しない。イジメなのだろうか。


色々あって、仕事で昇格し、マネージャーという立場になった。
技術者では完全に無くなっているけど、一般人として、だれもがなんちゃって技術者になれるように整備するのが自分の役目だと考えるようにしている。

IISにおけるSSL証明書更新の半自動化

仕事で、Windows ServerのIIS(Internet Information Service)上で稼働しているWebサービスを運用している。
当然HTTPSの為、SSL証明書を定期的に更新しなければならない。
更新はIISマネージャ上で簡単に実行できるのだが、運用しているサーバーが多くなってくると、煩わしい上に作業ミスや漏れが発生しやすくなる。

そこで、証明書差し変えbatを作成した。
内容自体は簡単なのだけど、思った以上にネット上で情報が見つからなかったので、ここにメモする。

【前提】
・pfxファイルは既に持っており、batと同じディレクトリに格納されている。
・証明書ストアは[Webホスティング]にする。
・古い証明書がバインドされているサイトはすべて新しい証明書にバインドしなおす。

IISマネージャ上でできることは全てappcmdでも実行できると思っていたのだけど、どうもそうでもないらしい。


技術の勉強、全然していないなぁ。
30歳になり、脳が固まっているのを感じる。

タスクスケジューラの結果通知

Windows Serverで日時作業や定期的なメンテナンスを行う場合、タスクスケジューラで実行することが多い。
しかし、そのタスクが実は失敗していたが、それに気付かずずっと運用していた・・・というシナリオは思ったより多い(自分の周りでは)。
本来的にはそのタスクにエラー通知なりを入れておくのが筋なのだが、ロジックが込み入っていてすぐにはエラー通知が実装できない場合がある。

暫定処理だが、そんな場合はタスクの結果を定期的に確認するタスクを仕込むと楽である。
例えば、AM6時には完了しているはずのタスク「TaskName」であれば、以下のTaskCheck.ps1をAM6時に実行するように設定すればよい。
なお、このサーバーから利用できるSMTPサーバがあることを前提としている。

繰り返しだが、暫定対応策である。
本来は本ロジックにエラー通知を仕込むべきだと思う。
せめてタスク失敗時のイベントをトリガーにしてエラー通知をさせたいのだが、意外とその方法が見つからず原始的な方法にしている。
一応、想定した時間(例ではAM6時)に終わらなかった時のことを考えて、実行中の場合は別の通知を行うようにほのかな工夫はしている。

ただ、ごちゃごちゃして専門家でないと分からないルーチンより、このほうがなんちゃって管理者でも理解しやすく、意外と受け入れられやすかったりする・・・


Mac miniを買った。
ついでもトラックパットとキーボードも新調し、20万円なり。
節約しなきゃ・・・なのだが、どうも散財癖が身についている。
ちょっとしたことで東京へ往復12,000円弱かけて行っちゃうし。

だからって訳では全くないけど、いい加減結婚したい。

ARR(IISのリバースプロキシ機能)でアップロード容量制限に引っかかった場合の対処法

会社のネットワーク関連の一部を管理しているが、
そのうちの一つにARR(Application Request Routing)が含まれている。
ARRの内容は下記リンクが分かり易いが、要はリバースプロキシだ。
参考: https://codezine.jp/article/detail/7018

特に問題なく運用していたのだが、最近あるシステムに大きい容量のデータを送ると404エラーになることが分かった。
サーバーログから調査しようとしたが、どうもサーバーに通信自体が来ていないように見える。
そこで、経由しているARRのログを確認したところ、こちらで404エラーになっていることが分かった。

ARRサーバーのほうのIISログを確認したところ、ステータスコードは404でサブコードは13であることが分かった。
そこで検索すると以下の情報がヒットした。
インターネット インフォメーション サービス 7.0 を実行しているサーバー上でホストされている Web サイトにアクセスするときにエラー メッセージ:「HTTP エラー 404.13-CONTENT_LENGTH_TOO_LARGE]
ここの解決策を行い、問題は解決した。
なお、こちらの環境ではrequestFilteringノードは見つからなかったが、手動で追加して特に問題なく反映された。


画像管理システムでも作ろうかしら。
昔作ったのはXMLでタグ情報持たせていたからパフォーマンス面から実質使えない状態だったけど、
DBにバイナリ入れて管理させるとどうだろう。
やっぱりDBとバイナリじゃそれはそれでパフォーマンス悪いかなぁ。

Windowsのパフォーマンスモニターの設定エクスポート、インポート

Windows Serverを運用しているのであれば、トラブル時の調査に備え、
パフォーマンスモニターを設定しておくことがほぼ必須手順になる。
複数台を運用している場合、どのサーバーにも共通のモニターを設定することになる。

なので、取得するカウンター設定を丸ごとコピーしたくなる。
結論から言うと簡単にできるのだが、意外とネット上に情報が無かったのでメモする。

【エクスポート】
1. パフォーマンスモニターを開く。
2. エクスポートしたいデータコレクタセットを右クリックし、[テンプレートの保存]をクリックする。
3. 任意の場所に保存する。

【インポート】
1. 【エクスポート】で保存したファイルを任意の場所に設置する。
2. パフォーマンスモニターを開き、データコレクタセットを新規作成する。
3. [テンプレートから作成する]を選択し、[次へ]をクリックする。
4. [参照]をクリックし、先程設置したファイルを選択する。
5. 以下、ダイアログに従って設定する。

まぁなんも難しいところもないんだけど、
インポート時には「新規作成」から行うのが意外と盲点になってた。


Mac Miniが欲しい。新しいのでないかなぁ。

会社のお荷物になりつつあり結構鬱気味。
運動して気を晴らそう。

SharePoint Foundation 2013の「構成データベースの設定」で信頼できないドメインからのログインと言われる場合の対処法

先日、SharePoint Foundation 2013を構成している際に今までに見たことがないトラブルが発生した。
最終的に解決できたものの、理屈が不明のため、ここにとりあえずでメモしておく。


環境

  • ドメインサーバ
  • DBサーバ(SQL Server 2014)
  • APサーバ(SharePoint Foundation 2013)

現象

  • 「構成データベースの設定」で情報を入力し、「次へ」をクリックしても「サービスが実行中かご確認ください」というエラーメッセージが表示される
  • DBサーバのイベントログには「このログインは信頼されていないドメインからのログインなので、Windows 認証では使用できません」と表示されている
  • 勿論ログインしようとしているユーザー(設定画面で指定したユーザー)はSQL Severと同ドメインの、権限も有るアカウントである
  • FWを切っても状況は改善しない

参考:「構成データベースの設定」画面


解決方法

正しいドメインのユーザーなのに信頼できないドメインと言われ途方にくれていたが、
まさかの部分を修正して解決した。

APサーバーのhostsファイルにドメインサーバ、DBサーバ、APサーバの名前解決情報が入っていた。
ドメインに所属して同じDNSを用いている以上不要なのでこのhostsファイルの上記名前解決情報を削除したところ、問題が解決した。

理屈は全くわからないのだが、名前解決情報があるために一部ドメインを経由せず認証を行うような挙動になったのかな、と推測している。
再現性を取る時間もないので、とりあえず経験した事実だけ書き記しておこう。


そろそろ転職を考えなくちゃいけないかなぁ。
日々勉強、常に時代に追いつき、追い越さなくてはならない「技術者」には僕は成れない。
自分に見切りを付けてもいい時期かもしれないな。