今回はPowerShell上でコマンドを実行する場合の注意点に関してです。PowerShell上で色々な作業を行う便利さに慣れてくると、コマンドプロンプトは全く使わずにPowerShell上で作業を完結させるようになってきます。が、このときにちょっとした落とし穴があります。

私がはまったのはwbadminコマンドの利用時でした。wbadminコマンドはPowerShellのコマンドレットではない、純粋なコマンドプロンプト上で動作するプログラムです。Windows Server 2008のバックアップを行うことができます。

PowerShell上からwbadminコマンドを実行しようとしたところ以下のような現象が発生しました。「きちんと入力しているのに、文法ミスと言われてしまう」というものです。

1:PSC:\Windows\System32>wbadminstartsystemstatebackup-backuptarget:f:

 

2:wbadmin1.0-バックアップコマンドラインツール

 

3:(C)Copyright2004MicrosoftCorp.

 

4:

 

5:

 

6:エラー-オプション:backuptargetの値がありません。以下の使用法を参照してください。

 

7:

 

8:使用法:WBADMINSTARTSYSTEMSTATEBACKUP

 

9:-backupTarget:{ボリューム名}

 

10:[-quiet]

 

11:

 

12:指定されたオプションに基づいてシステム状態のバックアップを実行します。

 

13:

 

14:-backupTargetバックアップの記憶域の場所です。記憶域のドライブ文字が

 

15:必要です。

 

16:

 

17:-quietユーザープロンプトなしでコマンドを実行します。

 

18:

 

19:例:

 

20:WBADMINSTARTSYSTEMSTATEBACKUP-backupTarget:f:

 

例のところに書かれているオプションをそのままコピー&ペーストしても動きません!原因がわからずかなり悩んでしまいました。しかも、全く同じコマンドをコマンドプロンプト上で実行すると正常に動作するのです。

結局原因はPowerShellの「式モード」と「コマンドモード」の違いにありました。結局以下のように入力すればうまく動くことがわかりました。

1:wbadminstartsystemstatebackup"-backuptarget:f:"

 

原因は-bakuptarget:f:という文字列をPowerShellに直接入力してみるとわかります。

1:PSC:\Windows\System32>-backuptarget:f:

 

2:単項演算子の後に式が存在しません。

 

3:発生場所行:1文字:2

 

こ#P#今4の#o---#回----:よ#w#のうe[[[件通特特「+に「rE式基まの常に別計P式Sxモ礎とまの特な算-oモhpー知めとD別意」bwーerド識めoな味さeドleとでs文をれr」lsコ(すの字持るSとでsマW。コ等つこh「はiンiマが文とeコ「oドnン含字をlマ式nモdドまが防lンモーoとれ含ぐがドーmドwそなまに”モドo:sのいれは-ー(dP引場るダ“ドeeoP数合場ブと」xwoをに合ルいpewそはにクうrreのそはォ文eSrまれ「ー字sChSまは計テをsoeh記そ算ー単imle述の」シ項omllしまさョ演nalたまれン算nl)場実てでしmdo]合行し囲とog(、さまうしdm:hそれうなてeoStれるり認)dotは(し識」e-p式計てしとn:モ算、て「ie/ー式「しコnt/ドな文まマuでら字いンPbf解実列、ドolc釈行」そモwopささとれーegpれれしがドr].るるて原(S(n、認因chheD識でoettoさコmlt/sせマmlpsコるンa:tマ必ドn-/uン要とd/dドがしWkyなあてmia/らる成onwp実。立ddao行しeoswさて)waeれい」skrるなのis)か2L-hっつiseたがvhl、あeilとり]n/いま(gbうすhoaわ。t-sけ詳tpiで細pscすは:..。以bh下/ltのromリoglンw.#ク5sm先iooのs-d辺.neりse)をptごa.確cn認eeくs.だ.jさlpいi/。2(e0#.0私c9自o-身m0ま/3だb-きl1ちo9んg)と/整c理nでsき!てAいEま3せ7ん7。5整C理6で7きDたEら2わ2か4り5やFす!く2書8こ9う.とe思nいtまrすy。))