このブログを検索

ラベル wmi の投稿を表示しています。 すべての投稿を表示
ラベル wmi の投稿を表示しています。 すべての投稿を表示

2012/06/06

DOSコマンドでアカウントを作成・削除など

windows GUIからアカウントを作成するのが面倒だったので以下のコマンドを使用した.
アカウント作成
net user [account] [password] /fullname:"[full name]" /comment:"[comment]" /passwordchg:no /add 
アカウント削除
net user [account] /delete
アカウント停止
net user [account] /active:no 
グループに追加
net localgroup "[group name]" [account] /add 
グループから削除
net localgroup "[group name]" [account] /delete 
パスワードを無期限
wmic useraccount where "Name='[account]'" set PasswordExpires=FALSE 
アカウントパスワードの変更
net user [account] [new password] 
グループの作成
net localgroup "[group name]" /add /comment:"[comment]"
dosとwmicを混合して使用する場合は、wmicを末尾にもってきた方がコマンドの失敗がなくて良い.



2012/05/25

リモートマシンの再起動・シャットダウンコマンド

  • wmiコマンド
WMIC /NODE:"リモートマシン名" /USER:"アカウント" /PASSWORD:"パスワード" OS WHERE Primary=1 CALL Shutdown ( or Restart )
※()内は再起動の場合 
  • DOSコマンド
shutdown /s( or /r ) /t 0 /f /m ¥¥リモートマシン名
※()内は再起動の場合
DOSコマンドでの実行する場合は、リモート先に存在するアカウントからでないと正常にコマンドを実行してくれないので、以下の方法でコマンド実行するアカウントを指定.
runas /noprofile /user:アカウント名 "実行コマンド"
※runasコマンドは実行する度に、指定したアカウントのパスワードを聞いてくる.
しかし、上記の方法を何行も書いておくと、記述したマシン分だけパスワードを入力しなければならないので面倒.なので以下の方法で対処.
  • 呼出ファイル(restart.bat)の作成
runas /noprofile /user:アカウント名 "[絶対パス]\main.bat"
  • 実行ファイル(main.bat)の作成
@echo off
shutdown /s /t 0 /f /m ¥¥リモートマシン名01
shutdown /s /t 0 /f /m ¥¥リモートマシン名02
...
  •  シャットダウン開始
C:\Users\user> restart.bat
上記方法は一括でシャットダウンだが、ターゲットを選びたい場合は、引数とforを使用してコマンドを書き換える.
  • 呼出ファイル(restart.bat)の作成
runas /noprofile /user:アカウント名 "[絶対パス]\main.bat %*"
  • 実行ファイル(main.bat)の作成
@echo off
for %%i in (%*) do ( shutdown /s /t 0 /f /m ¥¥%%i )
  • シャットダウン開始
C:\Users\user> restart.bat [リモートマシン名01] [リモートマシン名02] ....
※ ターゲットがXPの場合、以下のことに注意する
DOSコマンドが効かない場合があるのでwmiコマンド対処する.
wmiコマンドは他のプロセスが起動していると、リモート側でダイアログが表示されてしまい、命令がストップしてしまうので、以下のコマンドで前もって起動しているプロセスを落としておく必要がある.
WMIC /NODE:"マシン名" /USER:"アカウント" /PASSWORD:"パスワード" PROCESS WHERE name="target.exe" delete
wmiよりもdosの方が確実に落とせる確率が高いように思う(XPはwmiコマンドでしか落とせなかった).

2012/04/21

wmicでプロセス操作

プロセスを表示
c:¥users¥user > wmic process list
プロセスの一覧の”name”列の値だけ表示
c:¥users¥user > wmic process get name
指定したプロセス情報のみを表示
c:¥users¥user > wmic process where name='[name列に表示された文字列]'
指定したプロセスを終了させる
c:¥users¥user > wmic process where name='[name列に表示された文字列]' delete
リモートマシンのプロセスを終了させる
c:¥users¥user > wmic /node:"リモートマシン名" /user:"アカウント名" /password:"パスワード"  process where name="name列に表示された文字列" delete
ヘルプ参照(詰まったら/?をつけてみる)
c:¥users¥user > wmic process where name='[name列に表示された文字列]' /? 
c:¥users¥user > wmic process /?