2012-03-30 16 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. あなたは「ドンtはあなたが使用することができ、すべてでユーザー名を取得する必要が

    $Env:UserProfile 
    

    または

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

    あるいは

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

    これは最終的にはあなたの後ろのものかもしれません。