1

次のエラーが発生する理由がわかりません

Copy-Item : A positional parameter cannot be found that accepts argument 'C:\Code\PS\Auths\2.jpg'. At C:\Code\PS\auth-grab.ps1:9 char:12

C:\Code\PS\Auths\2.jpg が正しいパスです。

(パイプライン内のアイテムごとにこれらのいずれかを取得しています)

$rv をエコーすると、正しいパスが得られ、$_ が正しいはずです。どこが間違っていますか?

以下のおっとスクリプト:

function Generate-FileName($fi)
{           
    $rv = "C:\Code\PS\New\"+ $fi.Name
    #echo rv    
}

Get-ChildItem Auths\*.* -include 1.jpg, 2.jpg | 
ForEach-Object {        
    Copy-Item $_ -destination Generate-FileName(Get-ChildItem $_)       
}

$rv をエコーすると、必要なパスが取得されることに注意してください

4

2 に答える 2

3

関数をラップします-Generate-FileNameをこのように角かっこで囲みます-

ForEach-Object {        
    Copy-Item $_ -destination (Generate-FileName(Get-ChildItem $_))      
}

括弧で囲むと、が強制されます。

また


関数の戻り値を変数にコピーし、Copy-Itemで変数を次のように使用します-

function Generate-FileName($fi)
{           
    "C:\Code\PS\New\"+ $fi.Name
}

Get-ChildItem Auths\*.* -include 1.jpg, 2.jpg | 
ForEach-Object {   
    $destination =  Generate-FileName(Get-ChildItem $_)           
    Copy-Item $_ -destination $destination
}
于 2012-06-11T14:56:33.523 に答える
0

あなたの関数Generate-FileNameは何も返さないと思います。

あなたのスクリプトはcopy-itemでこの行を生成すると思います:

Copy-Item C:\Code\PS\Auths\2.jpg -destination 

このようにしてみてください:

function Generate-FileName($fi)
{           
    $rv = "C:\Code\PS\New\"+ $fi.Name
    return $rv # here is the change
}
于 2012-06-11T15:31:22.213 に答える