SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘ツール’ Category

リモート コンピュータをシャットダウンする方法

3 comments

リモート コンピュータをシャットダウンする方法として [shutdown.exe] があります。

Windows NT / Windows 2000 ではリソースキットに含まれています。

ダウンロードできる Windows 2000 のリソースキットには shutdown.exe が含まれていないため、リソースキットの
書籍を持っていない場合は NT のリソースキットのダウンロードモジュールを流用できるようです。

Windows 2000 Resource Kit Tools 管理タスク
Windows NT 4.0 Resource Kit Support Tools
ftp.microsoft.com

Windows XP 以降では標準で shutdown.exe が含まれています。
以下は XP で表示したヘルプになります。

使用法: shutdown.exe [-i | -l | -s | -r | -a] [-f] [-m コンピュータ名] [-t xx] [-c "コメント"] [-d up:xx:yy]

??????? 引数なし?????????????????????? このメッセージを表示します (-? と同じです)
??????? -i???????????????????????????????? GUI インターフェイスを表示します。このオプションは最初に指定する必要があります
??????? -l???????????????????????????????? ログオフ (-m オプションとは併用できません)
??????? -s??????????????????????????????? コンピュータをシャットダウンします
??????? -r??????????????????????????????? コンピュータをシャットダウンして再起動します
??????? -a??????????????????????????????? システム シャットダウンを中止します
??????? -m コンピュータ名???? シャットダウン/再起動/中止するリモート コンピュータの名前です
??????? -t xx??????????????????????????? シャットダウンのタイムアウトを xx 秒に設定します
??????? -c "コメント"???????????????? シャットダウンのコメントです (127 文字まで)
??????? -f???????????????????????????????? 実行中のアプリケーションを警告なしに閉じます
??????? -d [u][p]:xx:yy???????????? シャットダウンの理由コードです
?????????????????????????????????????????? u = ユーザー コード
?????????????????????????????????????????? p = 計画されたシャットダウンのコード
?????????????????????????????????????????? xx = 重大な理由コード (255 以下の正の整数)
?????????????????????????????????????????? yy = 重大ではない理由コード (65535 以下の正の整数)

[-m] オプションを使用するとリモート コンピュータをシャットダウンできるのですがこのコマンドでは資格情報 (ユーザー名) が
指定できないためリモート コンピュータに対してシャットダウンのできる権限を持ったユーザーからコマンドを実行しないと
シャットダウンをすることができません。

WMI であれば資格情報を設定できますので [WMIC] コマンドを使用するとリモート コンピュータを資格情報を設定して
シャットダウンすることができます。

以下のようなコマンドで実行可能です。
# 改行されていますが一行で入力します。

WMIC /NODE:"<コンピュータ名>" /USER:"<ユーザー名>" /PASSWORD:"<パスワード>" OS WHERE Primary=1 CALL Win32Shutdown 5

または

WMIC /NODE:"<コンピュータ名>" /USER:"<ユーザー名>" /PASSWORD:"<パスワード>" OS WHERE Primary=1 CALL Shutdown

再起動の場合は以下のコマンドで

WMIC /NODE:"<コンピュータ名>" /USER:"<ユーザー名>" /PASSWORD:"<パスワード>" OS WHERE Primary=1 CALL Win32Shutdown 6

または

WMIC /NODE:"<コンピュータ名>" /USER:"<ユーザー名>" /PASSWORD:"<パスワード>" OS WHERE Primary=1 CALL Reboot

?
# Shutdown / Reboot だと強制終了 / 強制再起動はできなさそうです。

これでリモート コンピュータのシャットダウン / 再起動を資格情報を指定して実行できます。
これでドメイン環境でなくてもリモート コンピュータを操作できます。

ただし、XP に対して実行したい場合は以下の KB の情報にあるように XP の設定を変更する必要があります。
# XP の SP 2 でセキュリティ強化されたことにより設定を明示的にする必要があります。

Windows XP SP2 の WMI に関する問題のトラブルシューティング方法
<http://support.microsoft.com/kb/875605/ja>

最小限の設定だけであれば以下の設定で大丈夫だと思います。
# Administrator で接続すること前提の設定です。

  1. ファイル名を指定して実行から [gpedit.msc] を実行
  2. [コンピュータの構成] → [管理用テンプレート] → [ネットワーク] → [ネットワーク接続] →
    [Windows ファイアウォール] を開く
    image
  3. ドメイン参加端末の場合は [ドメイン プロファイル] / ワークグループの場合は [標準プロファイル] を開く
  4. [Windows ファイアウォール: リモート管理の例外を許可する] を [有効] に設定
    ?image
  5. [スタート] → [コントロールパネル] → [管理ツール] → [ローカル セキュリティ ポリシー] を開く
  6. [セキュリティの設定] → [ローカル ポリシー] → [セキュリティオプション] を開く
    image
  7. [ネットワーク アクセス: ローカル アカウントの共有とセキュリティ モデル] を
    [クラシック – ローカル ユーザーがローカル ユーザーとして認証する] に設定する。
    image

以上で設定は終了です。

グループポリシー (gpedit.msc) でファイアウォールの例外設定をしない状態では以下のエラーが発生します。

エラー:
説明 = RPC サーバーを利用できません。

?
ローカルセキュリティポリシーを設定しない状態では以下のエラーが発生します。

エラー:
説明 = アクセスが拒否されました。

Win32Shutdown の引数の値は以下の URL に記載されています。
Win32Shutdown Method of the Win32_OperatingSystem Class

Value

Meaning

0 (0x0)

Log Off

4 (0x4)

Forced Log Off (0 + 4)

1 (0x1)

Shutdown

5 (0x5)

Forced Shutdown (1 + 4)

2 (0x2)

Reboot

6 (0x6)

Forced Reboot (2 + 4)

8 (0x8)

Power Off

12 (0xC)

Forced Power Off (8 + 4)

?

Administrator 以外で接続する場合には COM のセキュリティ設定や WMI のセキュリティが必要になりそうです。
image image

以下は覚書として WMIC の使用例を。

[リモートコンピュータでコマンドを実行]
WMIC /NODE:"<コンピュータ名>" /USER:"<ユーザー名>" /PASSWORD:"<パスワード>"? PROCESS CALL CREATE "cmd /c dir"

[CSV 形式で出力]
WMIC QFE LIST /FORMAT:csv

[HTML 形式で出力]
WMIC QFE LIST /FORMAT:htable > c:tempqfe.htm

[別コンピュータの情報を取得]
WMIC /NODE:”%COMPUTERNAME%” /NAMESPACE:rootcimv2 PATH Win32_QuickFixEngineering GET Description,FixComments,HotFixID,InstallDate,InstalledOn,ServicePackInEffect /FORMAT:csv

[CALL のヘルプを出力]
WMIC OS CALL /?
または
WMIC /NODE:"%COMPUTERNAME%" /NAMESPACE:rootcimv2 PATH Win32_OperatingSystem CALL /?

[フォーマットの形式を取得]
WMIC OS LIST /FORMAT /?

[リストで取得できる項目を取得]
WMIC OS LIST /?

Written by Masayuki.Ozawa

4月 26th, 2009 at 5:52 am

Posted in ツール

BGInfo で IP アドレス が (none) になってしまう場合の対応

leave a comment

BGInfo で標準の <IP Address> を使用して IP アドレスを表示すると (none) が表示されることがあります。
標準機能でなく WMI を使用すると以下の画面のように (none) を省略し、 IP のみ表示できます。
# 上段が標準、下段が WMI で取得した内容です。

image

設定方法は以下の通りです。

  1. [Custom] をクリックします。
    ?image
  2. [New] をクリックします。
    image
  3. [WMI Query] を選択し、[Path] に以下の WMI クエリを入力します。
    SELECT IPAddress FROM Win32_NetworkAdapterConfiguration where IPEnabled=TRUE?

    image?

これで (none) を非表示にして IP アドレスを表示できます。

他にも以下の WMI クエリを使用して壁紙を作っています。

[OS の名称を取得]

SELECT Caption FROM Win32_OperatingSystem

[OS のバージョンを取得]

SELECT Version FROM Win32_OperatingSystem

Written by Masayuki.Ozawa

1月 26th, 2009 at 3:28 pm

Posted in ツール

Bginfo の設定をログイン時に反映

leave a comment

@IT に以下の記事がありました。
?
?
こちらの記事に書かれているコマンドをタスクスケジューラで定期的に実行すると
最新の情報を反映することができます。
?
私の場合は以下の設定でログイン時に最新の情報に変更するようにしています。
?
1.Bginfo を適当なディレクトリに保存
?
2.設定ファイル (.bgi) を作成
?
3.コマンドプロンプトで以下のコマンドを実行
# C:Bginfo に Bginfo のプログラム設定を保存した場合のコマンドです。
?
?SETLOCAL
SET BGINFOPATH=C:Bginfo
REG ADD "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v Bginfo.exe /t REG_SZ /d ""^%BGINFOPATH%^bginfo.exe" %BGINFOPATH%Setting.bgi /timer:0 /NOLICPROMPT" /F

?
これでコンピュータのスタートアップとして Bginfo が登録されます。
?
ログイン時に Bginfo が自動的に実行されログイン時の設定内容で壁紙が再作成されます。
?

Written by Masayuki.Ozawa

12月 6th, 2008 at 5:52 am

Posted in ツール