iTunesでiPhoneが認識されなくなった

Windows 10に切り替えた時からなのか時期が明らかでは無いのですが、iPhoneをUSBで接続した際にiTunesで認識されなくなりました。無事解決したので覚書。先ずは現象ですが、次の通り。

  • Windows 10では接続された事を認識している
  • Windows 10のモバイルコンパニオンでは認識する
  • Apple Mobile Device Supportはインストール済

結論から言うと Windows 10にUSBでiPhoneを接続した際に、デバイスマネージャのユニバーサル シリアル バス コントローラーにApple Mobile Device USB Driverが出現しない事が原因でした。但し、このドライバーはApple製品がUSBで接続された際にのみ表示されるのでご注意を。

さて、復旧方法ですが Windows 10 IP において iTunes で iPhone を同期することができた。コメントありがとうございます。 : 楽しい生活研究室 に記載されている内容が全て。

  1. デバイスマネージャを起動
  2. ポータブルデバイス→AppleiPhone を右クリック→ドライバーソフトウェアの更新
  3. コンピューターを参照してドライバソフトウェアを検索します(R) を選択
  4. “C:¥Program Files¥Common Files¥Apple¥Mobile Device Support¥Drivers” を参照して usbaapl64.inf を読み込ませる
  5. ユニバーサル シリアル バス コントローラーにApple Mobile Device USB Driverが表示された事を確認

以上で復旧完了です…がいつおかしくなったんだろう?

特定フォルダをミラーリングするバッチファイル

最近音楽データはiTunesに何でもかんでも突っ込んでいるので吹っ飛んだら泣いちゃうかも…と思いバックアップ用のバッチファイルを作成しました。まあ ROBOCOPY でミラーリングしているだけですが、仕様だけメモで残しておきます。

@echo off

set TTMP=%time: =0%

set DST1=\hogeshare2backup_itunes_music
set LOG1=\hogeshare2logsbackup_itunes_music_%date:~-10,4%%date:~-5,2%%date:~-2,2%%TTMP:~0,2%%TTMP:~3,2%%TTMP:~6,2%.log

echo > %LOG1%
robocopy %HOMEDRIVE%%HOMEPATH%"MusiciTunesiTunes MediaMusic" %DST1% /MIR /R:0 /LOG:%LOG1% /NP /NDL

hogeはネットワーク参照で接続できるストレージ。太字の部分はiTunesの音楽データフォルダですね。ログはタイムスタンプ毎にバックアップ先のストレージに作成するようにしています。ROBOCOPYのオプションは詳細には書かないけれど延々タイムアウトを待つような事はしていないです。

動作確認は完了。今後は音楽データが増えた際に手動で動かす感じになりそうです。

JP1: イベント送信コマンドに注意

ajsevput を使って居たのだけれどサーバリプレイス序にバージョンリニューアルをしたら動かなくなってしまった件。解決できたので覚書。結論から言うと ajsevput はバージョンアップ以外の時は使っちゃダメだった模様。

このコマンドは,JP1 Version 5以前からの移行時に使用してください。JP1 Version 5のajsevputコマンドの機能の範囲だけで動作します。新たにJP1イベントを送信したい場合は,イベントサービスの機能拡張に対応した,次に示すどれかの方法で対処してください。
JP1イベント送信ジョブを使用する。
JP1/Baseのjevsendコマンドを使用する。
JP1/IMのJevRegistEvent関数を使用する。

使いやすさという点から jevsend に置換がよさそうですね。もしもローカルでイベントIDのみ飛ばしているのであれば ajsprint で定義体を抜いた時も s/ajsevput /i:/jevsend -I/g とかで一発変換できます。これなら大丈夫かな。

Hyper-V: ゲストOSへのメモリ割当時の注意事項

Hyper-V にてゲスト OS を構築する際嬉しい事のひとつにシステム領域が小さく作れるというものがあるかと思います。そんな事もあってシステム領域(Cドライブ)への領域割り当ては精々50GBで考えていたのですが、痛い目にあったので覚書。

先日、BI ツール用のサーバを構築していた時の話。BI ツールはデータをメモリ上に展開するモノが多いと思うのですが、その際にも例に漏れず 32GB のメモリをゲスト上に割り当てました。システム領域は可変ディスクで 50GB 。OSの構築が終わったのでアプリケーション導入担当者に引き渡したのですが、「「領域が不足しています」とシステムに怒られるんです。」と連絡が。

“コンピュータ” にて領域を確認すると確かに 45.3GB/48.8GB と表示されていました。しかし可変ディスクとして作成していた事から領域保持状態を確認してみると 17.2GB 。これは一体どういう事だ?という事で DiskInfo を使って確認をしてみました。すると pagefile.sys が 32GB という結果。ページングファイルの容量は、パフォーマンス調整で変更する事ができますが割当メモリと同等のページングファイルを OS インストール時に確保するようです。(因みに推奨値は1.5倍の 48GB でした。)

大容量のメモリを割り当てるようなゲストOSを構築する場合には要注意!

via
cefa::blog ? DiskInfo: どのファイルが容量を圧迫しているのか

DPM 2010: ワークグループサーバへのエージェントインストール

Microsoft Data Protection Manager 2010 を使うにあたってAD登録外のサーバを管理下に置く必要があったので覚書。

やりたい事
エージェントのインストール(複数台)
DPM サーバからのエージェント接続

やり方については IT雑記 DPM2010エージェントインストール?対象が非ドメイン(ワークグループ)の場合? を参考にしました。細かいアップデートをしている場合には後述の Technet の記事を参考にするとよいと思います。

バックアップ対象サーバに DPM サーバからエージェントインストーラをコピーして実行するあたりまでは特筆すべき点はありません。その後、バックアップ対象サーバで実行するコマンドがポイントですね。

>cd C:Program FilesMicrosoft Data Protection ManagerDPMbin
>SetDPMServer.exe -dpmServerName <DPM サーバのコンピュータ名> -isNonDomainServer -userName <バックアップ対象サーバの DPM 用ローカルアカウント名>

ワークグループサーバの場合に -isNonDomainServer を指定する点と -userName で DPM サーバからエージェントを認識させる時のアカウントを指定する点は覚えておかなければ。尚、複数台のバックアップ対象サーバに同様の設定をする場合の注意事項。

<バックアップ対象サーバの DPM 用ローカルアカウント名> は、 DPM サーバ上で排他的に管理される必要があります。

つまりバックアップ対象サーバ A とバックアップ対象サーバ B で同じDPM用ローカルアカウント名 LocalDPM の様なアカウントを使用する事はできません。 <サーバ名>_dpm みたいなルールを作って置くのが得策のようです。

後は DPM サーバからエージェントとの接続をしてあげれば OK 。ここは一般手順通りで問題なく完了しました。

via
IT雑記 DPM2010エージェントインストール?対象が非ドメイン(ワークグループ)の場合?
DPM 2010、2007のエージェントの展開方法について – Japan System Center Support Team Blog – Site Home – TechNet Blogs

Windows: net と sc どちらでサービスをコントロールするか

Windows OS にてオフラインバックアップを取得する為にサービスを停止・起動する為のスクリプトを書く事があります。どこかのサーバで一括して処理を行う事を前提に考えると、コンピュータ名を明示できる sc を使う事になりますが、単体構成のサーバ上でコントロールをする場合はどちらが良いのか考えどころです。

そこで簡単に2つのコマンドの機能を色々と調べてみましたが、次のような差異がありました。

  1. 引数とするサービスの名前の違い
  2. 同期・非同期の違い

引数とするサービスの名前の違いについてですが、 net はサービス一覧に出力されるサービス名をそのまま指定すればOKのようです。一方で sc は表示名ではコントロールできず ServiceKeyName にてコントロールする必要があるという事。したがって、例えば “Virtual Disk” サービスを止めようとした場合には次のような差異が出ます。

C:Usershoge>net stop "Virtual Disk"
Virtual Disk サービスを停止中です.
Virtual Disk サービスは正常に停止されました。

net コマンドなのでサービス名でそのまま止まりました。

C:Usershoge>sc stop "Virtual Disk"
[SC] OpenService FAILED 1060:

指定されたサービスはインストールされたサービスとして存在しません。

サービス名を指定したら「そんなサービスはインストールされていない」と怒られました。そこで ServiceKeyName を調べます。

C:Usershoge>sc GetKeyName "Virtual Disk"
[SC] GetServiceKeyName SUCCESS
名前 = vds

ServiceKeyName は vds である事が判ったので改めてコマンドを発行してみます。

C:Usershoge>sc stop vds

SERVICE_NAME: vds
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

止まりました。

ここまで確認すると ServiceKeyName にはスペースが入らないようなのでスクリプトから読み出したりする場合には何となく sc の方が良いような気がします。ところがもう一方の同期・非同期の方が結構な問題です。

サービス制御は Service Control Manager が代理で実行するので、sc stopは「終わらせて」と言ったきりで完全には終わり
を待たない可能性は高いですね。

上記のようなコメントがフォーラム上に掲載されていました。事実関係まで突き止めていないのですが、もしも事実であれば無闇に sc でコントロールするのは少々怖いですね。

とりあえず複数台のサーバをコントロールしなければならない場合には sc 。単体サーバ上でのコントロールであれば net を使うというのが落としどころに思えます。

via
サービスを開始、停止、一時停止、再開、または再起動する (Microsoft technet)
scコマンドは同期?非同期? (MSDNフォーラム)

Windows: イベントCOM+ EventSystemの発生

Windows Server 2008 R2 SP1にてシステムイベントログ4621から4623が発生。特に問題になるようなアプリケーションを導入しているわけでも無くシステム稼働に異常が出ているわけでも無い。それでも気持ち悪いので調べてみたところMicrosoftのTechnetで次のようなエントリ。

なので、tnaoshi さんが紹介してくださった英語のスレッドにあるように「気にしない」のが一番かと思います。。。お役に立てず申し訳ありません。

MSのフォーラムオペさんが言っているんだから華麗にスルーして良い筈…ってなわけでは無いけれど現状手の打ちようが無いので監視対象外に設定。

via
エラー:イベントID4621の解消方法について質問です (Microsoft)

OS: hosts でDNS参照回避

バックアップサーバとの通信などの理由で同じAD上にいるサーバに対してセカンダリのセグメントで通信を行いたい場合の設定。hostsに書けば良いのは当たり前の話なんだけれど、ロングホストネームで通信を取りに行くケースが十分考えられるので、こんな風にしてみた。

コンピュータ名(ロング)
foo.hogehoge
プライマリIPアドレス
192.168.100.10
セカンダリIPアドレス
192.168.200.10

これでhostsを登録する場合はこんな感じ。ショートでは登録しない。また相互に通信する必要がある事が大半だし、行きと帰りの経路が一致しないのも気持ち悪いので相手側のサーバにも確りと書いて置くことが必要。

192.168.200.10	foo.hogehoge

こうするとpingで確認してみた場合もこんな感じになる。尚、登録サーバ相手にのみ 192.168.200 のネットワークで通信を行うので、それ以外のAD上のサーバには 192.168.100 のネットワークで通信する。

C:UsersAdministrator>ping foo.hogehoge

foo.hogehoge [192.168.200.10]に ping を送信しています 32 バイトの
データ:
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128

192.168.200.10 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

C:UsersAdministrator>ping foo

foo.hogehoge [192.168.200.10]に ping を送信しています 32 バイトの
データ:
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128

192.168.200.10 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

逆にショートの場合だけセカンダリを通すというのもアリだけれど、最近のMS系ソフトだとAD認証を使ってアプリケーション上での動作を承認したりするので、上のようなやり方の方が良いと思う。

Windows: イベント490@01010004の発生

Windows Server 2008 R2 SP1にて構築の仕組みで発生したシステムイベントログ。通報がガンガン飛んでくるので調べてみたところナレッジに直ぐ引っかかりました。

次のシナリオを検討してください。

HYPER-V ゲスト オペレーティング システムは、Windows Server 2008 R2 または Windows 7 を実行しているがあります。
ゲスト オペレーティング システムで、SCSI コント ローラーに接続されているディスクがあります。

確かにSCSIアダプタ接続で外部のiSCSIストレージを参照しているのだけれど気持ち悪いなあ。このイベントは無視してもかまいません。っていうから無視します。通報除外フィルタに追加完了。

Windows: イベントログを書き込む

Windowsイベントログを監視対象にすることが増えてきました。検証の為に強制的にイベントを上げる必要があるのですが、コマンド一発で検証終われば便利じゃない?って事で覚書。
一度はヘルプを読むことをお勧めします。

C:Documents and Settingshoge>eventcreate /?

たとえばERRORイベントをSYSTEMカテゴリに登録するのであれば次のようになります。

C:Documents and Settingshoge>eventcreate /ID 999 /L system /T ERROR /D "ERRORイベント登録テスト"

XPとか2003でも使えるので良いですね。