2012-03-30 31 views
2

我试图运行以下脚本,我认为很简单。我在做什么这里拧......Powershell复制文件与变量

[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 + ...

回答

7

我觉得你有你的第一行错路周围。目前,您正在分配一个空变量(其值应为$null)至$Env:UserName,因此会覆盖用户名,而不是读取它。

我觉得应该是

$username = [Environment]::Username 

或者,如上面提到的,你可以通过特殊Env:驱动器访问的环境变量:

$username = $Env:Username 

且无关的问题,只是更好的代码问题:

  1. 你可以把用户名直接进入字符串(你似乎知道,这表现上面一条线 - 在这里你不需要在这种情况下一个字符串,虽然):

    $from = "C:\Users\$username\favourites\*" 
    
  2. 你不”吨需要在所有获取的用户名,你可以使用

    $Env:UserProfile 
    

    [Environment]::GetFolderPath([Environment+SpecialFolder]::UserProfile) 
    

    甚至

    [Environment]::GetFolderPath([Environment+SpecialFolder]::Favorites) 
    

    这可能最终会成为你所追求的。