2012-03-02 1 views
1

私の最初のPowerShellスクリプトPowershellに簡単なバックアップスクリプトを書いています。Powershellスクリプトの中でPath-could-be-foundエラーが発生しました

 
PS C:\tmp> $source="C:\tmp\source" 
PS C:\tmp> $dest="C:\tmp\dest" 
PS C:\tmp> cp "$source\*.txt" "$dest\" 

を、すべてが、正常に動作が期待通りに動作します:コマンドラインで

私はこれを実行destにソースからcopeiesすべての.txtファイルを。パスが見つかりません 'C:\ TMP \ソースC:\ TMP \ destに' があるため

私はscript.ps1ファイルによ

は、
 
copyBackupFiles ("C:\tmp\source", "C:\tmp\dest") 
function copyBackupFiles($Source, $Dest) 
{ 
    Copy-Item "$Source\name.*" -Destination "$Dest\" 
} 

が、私はエラー コピー項目を取得してい存在しない。

この問題の原因はありますか?すでに

答えて

2

変更に...運とオンラインあなたは2つの項目で$source配列をパラメータに渡すbecaseにです

copyBackupFiles ("C:\tmp\source", "C:\tmp\dest") 

から

copyBackupFiles "C:\tmp\source" "C:\tmp\dest" 

にラインを時間の良いカップルを過ごしたが、 $ destに値はありません。

不幸にも、これはC#、Javaなどの言語を知っている人にとって潜在的なトラップの1つです。引数はカンマで区切られず、スペースで区切られます。 F#。

あなたはトレース・コマンドで発生義和見ることができます:

function test($a, $b) { write-host $a/$b } 
Trace-Command -name parameterbinding { test (1, 2) } -PSHost 
Trace-Command -name parameterbinding { test 1 2 } -PSHost 
+0

おかげで、それは働きました!うわー、それは本当の罠です – trailmax

関連する問題