Powershell Get-ChildItem 检查文件名不起作用

Powershell Get-ChildItem Check file name not working

我想做的是在文件夹中查找特定文件,然后检查每个匹配的文件的名称并将其放入另一个文件夹中。这是我正在尝试做的示例:

$FileABackupLoc = "C:\FolderA"
$FileBBackupLoc = "C:\FolderB"

Get-ChildItem -Path $SourceFolder -Include *Membership*.pgp -Name -Recurse | 
%{ 

    Write-Host "Current file: $_"

    if($_ -like '*FileA*')
    {
        [System.IO.FileInfo]$FileADestination = (Join-Path -Path $FileABackupLoc -ChildPath $_.Name.replace(“_”,“\”))
    move-item -Path $_.FullName -Destination $FileADestination.FullName -Verbose
   }

    if($_ -like '*FileB*')
    {
        [System.IO.FileInfo]$FileBDestination = (Join-Path -Path $FileBBackupLoc -ChildPath $_.Name.replace(“_”,“\”))
    move-item -Path $_.FullName -Destination $FileBDestination.FullName -Verbose
   }

}

当我 运行 代码时,我收到此错误但不知道为什么: 您不能对空值表达式调用方法。

也许试试这个:

Get-ChildItem -Path $SourceFolder -Include *Membership*.pgp -Recurse | % {

if ($_ -like '.*FileA.*')
{
  $FileADestination = Join-Path -Path $FileBBackupLoc -ChildPath (Split-Path -Leaf -Path $_.FullName)
  Move-Item -Path $_.FullName -Destination $FileADestination
}
...

我相信您在原始 Get-ChildItem 中使用 -Name 参数可能会妨碍您,来自文档:

-Name

Gets only the names of the items in the locations. If you pipe the output of this command to another command, only the item names are sent.