Вам нужно будет дважды вызвать Get-ChildItem.Первый раз, чтобы получить шаблон, который вы хотите сопоставить с именами файлов, и второй, чтобы получить файлы.Затем вы можете передать результаты второй команды в Move-Item.Вот пример того, как это сделать:
[CmdletBinding()]
param(
$DirectoryToScan,
$ExtensionToMatch = ".fin",
$TargetDirectory
)
$Files = Get-ChildItem -Path $DirectoryToScan -File
foreach ($File in $Files) {
if($File.Extension -eq $ExtensionToMatch) {
$PatternToMatch = "$($File.BaseName.Substring(0, 7))*$ExtensionToMatch"
Write-Verbose "PatternToMatch: $PatternToMatch"
$MatchedFiles = Get-ChildItem -Path $DirectoryToScan -Filter $PatternToMatch
}
$MatchedFiles | Move-Item -Destination $TargetDirectory
}
Если вы сохраните вышеприведенное в файл с именем Move-MatchingFiles.ps1, вы можете передать свои параметры Moving-MatchingFiles.ps1 -DirectoryToScan C:\Temp -TargetDirectory C:\Temp\fin
.Параметр ExtensionToMatch является необязательным и необходим только в том случае, если вы хотите переместить файл другого типа.