Как проверить Get-ChildItem на отсутствие файлов в составе Invoke-Command? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть следующий скрипт:

try {
Invoke-Command -Computer $Server -ScriptBlock { 
    param ($dir, $name)
    Get-ChildItem -Path $dir | 
        Where {$_.Name -Match "$name"} | 
            Remove-Item -confirm:$false -Recurse -Verbose 
} -ArgumentList $Directory, $DB

    Write-Host "`r`nsuccessfull! " -foregroundcolor yellow -backgroundcolor black
}
catch {
    write-host "`r`nFAILED!" -foregroundcolor red -backgroundcolor black
    Write-Host "$($error[0])`r`n" -foregroundcolor magenta -backgroundcolor black
}

если не существует файлов для удаления ... в настоящее время он по-прежнему говорит "успешно" в качестве вывода ... могу ли я уточнить это, чтобы сказать "there was no files to delete" else "successfully deleted x number of files"?

также, recurse на многословном необходимо, потому что в противном случае я вынужден вручную подтвердить даже с параметром подтверждения.Я думаю, это потому, что в целевой папке (папках) есть много подпунктов, которые я хочу удалить ...

однако я получаю тонну многословных сообщений для каждого из этих элементов, говорящих

VERBOSE: выполнение операции «Удалить каталог» для цели \ name1 \ subitem

VERBOSE: Выполнение операции «Удалить каталог» для цели \ name1 \ subitem1

VERBOSE:Выполняя операцию «Удалить каталог» для target \ name1 \ subitem2

, можно ли сделать так, чтобы он просто печатал многословно на уровне папки вместо каждого отдельного элемента?

VERBOSE: Выполнение операции «Удалить каталог» для цели \ name1

1 Ответ

1 голос
/ 04 апреля 2019

Присвойте свой список файлов переменной, которую вы затем сможете проверить. Бросать все по конвейеру хорошо для быстрого и грязного, но не так много, если вы хотите извлечь информацию о состоянии в различных точках.

$delfiles = Get-ChildItem -Path $dir | Where {$_.Name -Match "$name"} 
If ($delfiles) {
    Write-Host "There are $($delfiles.count) to delete " 
    $delfiles | Remove-Item -confirm:$false -Recurse #put a try/catch here maybe
    Write-Host "`r`nsuccessful! "    
}
else {
    write-host "there were no files to delete"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...