如何在for-eachobject循环中查找当前对象的路径

时间:2017-06-28 18:52:01

标签: powershell

我试图在for-eachobject循环中找到当前正在操作的对象的路径。有人可以解释如何做到这一点?我正在尝试将Copy-Item的源路径设置为文件所在的任何路径。这是我与Powershell合作的第一个项目。假设$ Src已被正确实例化。

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 个答案:

答案 0 :(得分:2)

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

我建议您也使用-WhatIf来检查它是否符合您的预期。

答案 1 :(得分:1)

$_$PSItem(PowerShell 3.0+)访问管道中的当前对象。从这里,您可以访问其成员。