将用户名添加到文件路径

时间:2012-06-28 21:35:43

标签: powershell powershell-v2.0

我正在尝试向文件路径添加用户名,以便创建包含其用户名的目录。

这就是我想要查看用户文件夹的方式:

D:\Test Space\ArtP$

当我在Shell中执行此操作时:

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

它说我的路径为空,我相信shell如何解释引号以及脚本是如何存在差异的。如何在上面的文件路径中正确获取我的用户名?

1 个答案:

答案 0 :(得分:3)

请参阅How to pass arguments for remote commands

中有关传递本地值的部分
$samAccountName = "ArtP"
$user_folderLocalValue = "D:\Test Space\$samAccountName"

Param:

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