У меня есть этот Powershell код:Powershell хватает дополнительные файлы
Function CheckFileList()
{
$limit = (Get-Date).AddDays(-270)
$input_path = gci '//blah/folder/' | sort -property LastWriteTime
$output_file = 'c:\PowershellScripts\prune_results.txt'
#Clear-Content $output_file
$countf = 0
$outputstr = ""
$outputstr = $(Get-Date -format 'F') + " - Folders to be purged:`r`n"
$input_path | Foreach-Object{
if ((Get-Item $_.FullName) -is [System.IO.DirectoryInfo]) {
if ($_.LastWriteTime -le $limit) {
$source=$input_path + $_.Name
$dest="\\server\otherfolder" + $_.Name
[email protected]("/MOVE")
[email protected]("/COPY:DAT /DCOPY:T")
$cmdArgs = @("$source","$dest",$what,$options)
"robocopy " + $cmdArgs >> $output_file
#robocopy @cmdArgs
#Move-Item $_.FullName \\server\otherfolder
$outputstr = $outputstr + " (" + $_.LastWriteTime + ") `t" + $_.Name + "`r`n"
$countf++
$outputstr = $outputstr + "Folders [to be] purged: " + $countf + "`r`n`r`n"
$outputstr >> $output_file
Exit
}
}
}
#$outputstr = $outputstr + "Folders [to be] purged: " + $countf + "`r`n`r`n"
#$outputstr >> $output_file
}
CheckFilelist
Этот код только для отображения, как команда будет работать. Это всего лишь 1 цикл (выход после первого цикла), поэтому он должен был захватить 1 папку.
Но результат был гигантским и, казалось, включал в себя все папки (1000+) вместо одного. Это было примерно так:
robocopy file1.txt FOLDER1 FOLDER2 FOLDER3 FOLDER4 ........ \\server\otherfolder\FOLDER5
Я что-то пропустил? Следует перемещение папок на //blah/folder/
в другую сетевую папку (\\server\otherfolder
)
Эта строка '$ источника = $ input_path + $ _. Name' ваш' $ source' будет содержать несколько файлов я думаю, так как входной путь идет от 'Get-ChildItem'? – Matt
Какую папку он должен захватить? Тот, который был написан последним? Есть несколько вопросов, здесь я вижу, что я не уверен, что это за намерение – Matt
@Matt Обновил мой вопрос с того, какие папки – Zeno