Powershell сравнить, если заявление не работает - PullRequest
0 голосов
/ 18 сентября 2018

Я пишу сценарий PowerShell, который просматривает текстовый файл $file_list, а затем сравнивает имя файла в этом файле с файлами в каталоге /bin.

Если они совпадают, он перемещает этот файл вуказанная папка $destination_folder.

Проблема в том, что оператор if не выполняется - он попытается переместить все файлы из /bin в $destination_folder.

$file_list = Get-Content "C:\files\Patching\Worker\list.txt"
$search_folder = “C:\Program Files\NetBrain\Worker Server\bin”
$destination_folder = “C:\files\Patching\Backups”


foreach ($item in $file_list) {
  $file_to_move = Get-ChildItem -Path $search_folder -Filter $file -Recurse -ErrorAction SilentlyContinue -Force | % { $_.FullName}
  $destination_folder = “C:\files\Patching\Backups”

  if ($file_to_move.name -like $item) {
    Move-Item $file_to_move $destination_folder
  }
}

1 Ответ

0 голосов
/ 19 сентября 2018

Я нашел исправление.Я не анализировал вызов Get-ChildItem должным образом.Чтобы исправить это, требуется вложенный foreach{}.

$file_list = Get-Content "C:\files\Patching\Worker\list.txt"
$bin_folder = "C:\Program Files\NetBrain\Worker Server\bin"
$backups_folder = "C:\files\Patching\Backups"

#Move files from bin to backup
foreach ($item in $file_list) {

 foreach ($file in Get-ChildItem $bin_folder) {

   if ($file -like $item) {
      $file_to_move = "C:\Program Files\NetBrain\Worker Server\bin\$file"
      Move-Item $file_to_move $backups_folder
      Add-Content $output_file "$file_to_move"
   }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...