2017-06-28 10 views
1

for-eachobjectループで現在操作されているオブジェクトのパスを検索しようとしています。誰かがこれを行う方法を説明することはできますか?私はCopy-Itemのソースのパスを、ファイルがどのようなパスに設定しようとしています。これは私がPowershellで作業した最初のプロジェクトです。 $ Srcが正しくインスタンス化されていると仮定します。for-eachobjectループ内の現在のオブジェクトのパスを見つける方法

Get-ChildItem -Path $Src -Recurse -Force | Where-Object {$_.Name -notmatch "Archive" -and ($_.PSIsContainer)}| 
ForEach-Object { 
    $DateStr = $_.BaseName.Substring(0,2)+'/'+$_.BaseName.Substring(3,2)+'/'+$_.BaseName.Substring(6,4) 
    $FileDate = get-date $DateStr 
    If ($FileDate -ge $Date -and !($_.PSIsContainer)) { 
     $ParentOjbect = $_.Directory 
     $Parent = $ParentOjbect.Name 
     Copy-Item -Path (Join-Path -Path $Src -ChildPath '\*.txt') #this 
    #needs to be corrected to only point to the current file 
-Dest (Join-Path $Dst ("$($_.Directory.Name) $($_.Name)")) -WhatIf 
    } 
} 

答えて

2
Copy-Item -Path (Join-Path -Path $_.FullName -ChildPath '\*.txt') 

私はあなたにも、それはあなたが最初に何を期待し確認するためにも、その上-WhatIf使用をお勧めします。

+0

ありがとう、それは今、まさに私がコードを実行したい、What-Ifによると、それは想定されているようにフォルダに何もポップアップしていません。それがどんなアイデアなのか? –

+0

-whatifを削除しましたか? –

1

$_または$PSItem(PowerShell 3.0以降)は、パイプラインの現在のオブジェクトにアクセスします。ここから、そのメンバーにアクセスできます。

+0

ありがとう、それは今、まさにWhat-Ifによれば、私がコードにしたいものをやっているのですが、それが想定されているようなものは何もポップアップしません。それがどんなアイデアなのか? –

関連する問題