2

ユーザー名をファイルパスに追加しようとしています。これにより、ユーザー名を含むディレクトリを作成できます。

これが私のユーザーフォルダの見た目です:

D:\Test Space\ArtP$

シェルでこれを行うと:

PS > $samAccountName = "ArtP"
PS > $user_folder = "D:\Test Space\$samAccountName$"
PS > $user_folder
D:\Test Space\ArtP$

期待どおりに動作します。次に、リモートサーバーでこれを実行することになっているスクリプトでこれを試します。

 $samAccountName = "ArtP"
 $user_folder = "D:\Test Space\$samAccountName$"
 invoke-command -computername remote_server -scriptblock {
     new-item -path $user_folder -type directory -Force
 }

次のエラーが発生します。

Cannot bind argument to parameter 'Path' because it is null.
    + CategoryInfo          : InvalidData: (:) [New-Item], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.NewItemComm
   and

私のパスがnullであると言っており、シェルが引用符を解釈する方法とスクリプトがどのようになっているのかについて、いくらかの矛盾があると思います。上記のファイルパスでユーザー名を正しく取得するにはどうすればよいですか?

4

1 に答える 1

2

リモートコマンドの引数を渡す方法のローカル値の受け渡しに関するセクションを参照してください。

$samAccountName = "ArtP"
$user_folderLocalValue = "D:\Test Space\$samAccountName"

パラメータ付き:

invoke-command -computername remote_server -scriptblock {
param($user_folder)
new-item -path $user_folder -type directory -Force
} -Args $user_folderLocalValue

または$argsを使用

invoke-command -computername remote_server -scriptblock {
new-item -path $args[0] -type directory -Force
} -Args $user_folderLocalValue
于 2012-06-28T21:46:22.103 に答える