2012-03-30 65 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) 
    

    這可能最終會成爲你所追求的。