8
$computer = gc env:computername

# Argument /RU '$computer'\admin isn't working.
SchTasks /create /SC Daily /tn "Image Verification" /ST 18:00:00 /TR C:\bdr\ImageVerification\ImageVerification.exe /RU '$computer'\admin /RP password

基本的に、スケジュールされたタスクでコンピュータ名を指定する必要があります...

前もって感謝します!

4

2 に答える 2

13

一重引用符の文字列は、PowerShell で変数を展開しません。二重引用符で囲まれた文字列を試してください。

"$computer\admin"
于 2012-09-12T18:14:27.937 に答える
0

キース・ヒルの役立つ回答を追加情報で補完するには:

引用符"$computer\admin"$computer\adminで囲まれていない文字列引数は、暗黙のうちに - で囲まれている(二重引用符で囲まれている)"..."かのように扱われるため、つまり、文字列補間(埋め込まれた変数の参照と式をそれらの値で置き換える)を実行する展開可能な文字列として扱われるため、両方とも引用符で囲まれていない形式 ,が機能します。内容を解釈しない逐語的な文字列( 、重引用符) とは対照的です。'...'

疑わしい場合は"..."、特に文字列に|やなどのメタ文字が含まれている場合は、明示的に を使用してください。<

引用符で囲まれていないトークンがコマンド引数として解析される方法に関する完全なルールについては、この回答を参照してください。

落とし穴:

あなたが試みた部分的な引用:

'$computer'\admin

"$computer"\admin補間が機能するように修正されたとしても、PowerShell は (おそらく驚くべきことに) の値$computerと逐語的な文字列\admin2 つの引数として渡すため、機能しません。部分引用符を含む複合文字列が引用符で囲まれていない文字列で始まる場合にのみ、単一の引数として認識されます(たとえば、機能します)。詳細については、この回答$computer"\admin"を参照してください。

もう 1 つの注意すべき落とし穴は、などのスタンドアロンの変数参照のみを にそのまま埋め込むことができること$computer$env:COMPUTERNAME"..."です。(プロパティ アクセスとインデックス付きアクセスを含む)またはコマンド埋め込むには、それらを部分式演算子で囲む必要があります。たとえば、式の値または展開可能な文字列を埋め込むには、orを使用する必要があります。完全なルールについては、この回答を参照してください。$(...)$someArray[0]$someObj.someProp"$($someArray[0])""$($someObj.someProp)"

于 2021-11-19T21:54:52.377 に答える