我正在尝试运行我认为非常简单的以下脚本。我在这里干什么……
[Environment]::UserName = $username
Write-Host "The user is $username"
$from = "c:\Users\" + $username + "\favourites\*.*"
$to = "c:\test"
Write-Host "This is from dir: $from"
Write-Host "This is to dir: $to"
Copy-Item $from $to
脚本似乎不喜欢 + $username +
...
最佳答案
我认为你的第一行写错了。目前,您正在将一个空变量(它的值应该是 $null
)分配给 $Env:UserName
,从而覆盖用户名,而不是读取它。
我觉得应该是
$username = [Environment]::Username
或者,如上所述,您可以通过特殊的 Env:
驱动器访问环境变量:
$username = $Env:Username
与您的问题无关,只是更好的代码问题:
您可以将用户名直接放入字符串中(您似乎知道这一点,如上一行所示 - 不过在这种情况下您不需要字符串):
$from = "C:\Users\$username\favourites\*"
你根本不需要获取用户名,你可以使用
$Env:UserProfile
或
[Environment]::GetFolderPath([Environment+SpecialFolder]::UserProfile)
甚至
[Environment]::GetFolderPath([Environment+SpecialFolder]::Favorites)
这可能最终就是您想要的,在这里。
关于variables - 带变量的 Powershell 复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937371/