Рейтинг:0

Найти каталог целевого файла на удаленном сервере

флаг cn

Я пытаюсь найти каталог файлов в списке удаленных серверов. Я хочу:

  1. Используйте PowerShell; получить цели из текстового файла с разделителями-запятыми, т.е. server1,file1 Примечание: файл отличается для каждого сервера.
  2. Поиск файла в разделах C: и E:, даже если его несколько экземпляров.
  3. Получить каталог файлов
  4. Запишите результат в .csv
  5. Просмотрите вывод в главном окне Powershell.

Вот сценарий, с которым я работал. Я не могу заставить его работать должным образом. Мне нужна помощь:

$scriptpath = $MyInvocation.MyCommand.Path 
$dir = разделенный путь
$FileName = "$каталог\Servers.txt"
$Данные = gc $ИмяФайла

foreach ($ строка в $ данных)
    {
    $Позиция = $Строка.IndexOf(",")
    $Server = $Row.Substring(0, $Position)
    $Файл = $Строка.Подстрока($Позиция + 1)

    $CPart = @{
       Имя = "CPart"
       Путь = "\$Сервер\C$"
       #Path = "Файловая система::\$Сервер\C$"
    }

    $EPart = @{
       Имя = "EPPart"
       Путь = "\$Сервер\E$"
       #Path = "Файловая система::\$Сервер\E$"
    }

    @($CPart, $EPart) | ForEach-Object {
        if ($Server -like "*.mydomain.com") {$session = New-PSSession -Computer $Server -Credential MYDOMAIN\userid -ErrorAction Stop}
        else {$Session = New-PSSession -Computer $Server -ErrorAction Stop}
        Invoke-Command -Session $Session -ScriptBlock {$Result = Get-ChildItem -Recurse -Path $_.Path | Where-Object {$_.Name -match '$File'};возврат $Result}
        $Результат
        #$item = Get-ChildItem -Recurse -Path $_.Path | Where-Object {$_.Name -match '$File' -и }
        #Write-Host $item
    }
}
    
<#foreach ($Server в $Servers) 
    {
    "\$Сервер\C$" | Get-ChildItem -recurse -filter $FileList | Выберите Каталог, Имя | Write-Host $_.Directory + "\" + $_.Name
    "\$Сервер\E$" | Get-ChildItem -recurse -filter $FileList | Выберите Каталог, Имя | Write-Host $_.Directory + "\" + $_.Name
}

$columnToGet = 0
$columns = gc $fileName | 
   %{ $_.Split(",")[$columnToGet] }
$столбцы
#>
флаг br
взгляните на класс `CIM_DataFile`. вы можете использовать CIM или WMI, чтобы вызвать его с целевой системой, диском и файлом ... и он вернет информацию о том, что он находит.
флаг cn
Спасибо за это предложение. Я прочитал оба (https://powershell.one/wmi/root/cimv2/cim_datafile), и кажется, что они запрещают удаленный рекурсивный поиск файлов, потому что WMI сначала собирает все содержимое раздела, прежде чем выполнять какую-либо фильтрацию. (нахождение). Я действительно ищу кого-то, кто поможет мне рекурсивно использовать get-childitem на удаленном разделе сервера таким образом, чтобы, надеюсь, это не заняло весь день.
флаг br
командлету `Get-ChildItem` также потребуется прочитать весь том, чтобы найти какие-либо файлы, _если вы не знаете дерево каталогов, чтобы ограничить поиск_. ///// команда robocopy с параметром "только список" будет довольно быстрой... и, как и командлет G-CI, ее можно запустить с помощью `Invoke-Command` для параллельного выполнения задач на каждой целевой системе . затем он отправлял окончательный результат обратно в вызывающую систему.

Ответить или комментировать

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