Поиск по нескольким папкам в списке нескольких серверов

#powershell

Вопрос:

Я пытаюсь создать ps1, который может выполнять поиск по нескольким папкам в списке нескольких серверов, но, похоже, это не сработало. Что-то не так с папкой*, я думаю. Извините, я очень новичок в этом деле.

     $folders = get-content "C:tempfolders.txt"
    get-content c:tempservers.txt | Foreach {
    Get-ChildItem -Path "c:temp" -include *folders -Recurse -ErrorAction 
    silentlycontinue} | export-csv c:Tempresults.csv
 

Комментарии:

1. Всегда ли папки, в которых вы хотите выполнить поиск C:temp , где-то вложены?

2. ДА. Я хочу выполнить поиск по нескольким папкам в c:/temp.

Ответ №1:

Вы читаете текстовый файл с (предположительно) списком имен серверов для проверки, но в своем коде вы ничего не делаете с этим, кроме как повторяете этот список..

Попробуй

 $folders = Get-Content 'C:tempfolders.txt'   # the list of foldernames to look for
Get-Content 'C:tempservers.txt' | ForEach-Object {
    # construct a UNC path to the C:Temp folder on the remote server  (\serverc$temp)
    # the $_ Automatic variable contains one servername in each iteration
    $remotePath = "\$_C$temp"
    Get-ChildItem -Path $remotePath -Include $folders -Directory -Recurse -ErrorAction SilentlyContinue | 
    # select properties you need
    Select-Object @{Name = 'ComputerName'; Expression = {$_}}, Name, FullName, CreationTime, LastAccessTime, LastWriteTime
} | Export-Csv 'C:tempresults.csv' -NoTypeInformation
 

или

Попросите удаленные серверы выполнить работу и вернуть вам результаты. Возможно, вам потребуется добавить учетные данные при вызове команды:

 $folders = Get-Content 'C:tempfolders.txt'   # the list of foldernames to look for
Get-Content 'C:tempservers.txt' | ForEach-Object {
    Invoke-Command -ComputerName $_ -ScriptBlock { 
        # this is running on the remote computer, so it uses it's own LOCAL path
        # the $folders variable needs to be scoped '$using:folders', otherwise it is unknown in the scriptblock
        Get-ChildItem -Path 'C:temp' -Include $using:folders -Directory -Recurse -ErrorAction SilentlyContinue | 
        # select and output the properties you need
        Select-Object @{Name = 'ComputerName'; Expression = {$env:COMPUTERNAME}}, Name, FullName, CreationTime, LastAccessTime, LastWriteTime
    }
} | Export-Csv 'C:tempresults.csv' -NoTypeInformation
 

Комментарии:

1. Спасибо тебе оооочень большое. В настоящее время я запускаю команду (Test-Path \xxxxxxxxxxf$имя папки) для проверки пути, и это очень неэффективно. Этот скрипт работает сейчас и может выбрать, какой столбец в результате. Я буду использовать этот вывод скрипта, чтобы сделать все остальное. Еще раз спасибо !!