Score:0

ค้นหาไดเรกทอรีของไฟล์เป้าหมายบนเซิร์ฟเวอร์ระยะไกล

ธง cn

ฉันพยายามค้นหาไดเร็กทอรีไฟล์ในรายการเซิร์ฟเวอร์ระยะไกล ฉันต้องการ:

  1. ใช้ Powershell; รับเป้าหมายจากไฟล์ข้อความที่คั่นด้วยเครื่องหมายจุลภาค เช่น server1,file1 หมายเหตุ: ไฟล์จะแตกต่างกันสำหรับแต่ละเซิร์ฟเวอร์
  2. ค้นหาพาร์ติชัน C: และ E: เพื่อหาไฟล์ แม้ว่าจะมีมากกว่าหนึ่งอินสแตนซ์ก็ตาม
  3. รับไดเร็กทอรีไฟล์
  4. เขียนผลลัพธ์เป็น .csv
  5. ดูผลลัพธ์ในหน้าต่างหลักของ Powershell

นี่คือสคริปต์ที่ฉันทำงานด้วย ฉันไม่สามารถทำให้มันทำงานได้อย่างถูกต้อง ฉันต้องการความช่วยเหลือ:

$scriptpath = $MyInvocation.MyCommand.Path 
$dir = แยกเส้นทาง $scriptpath
$ชื่อไฟล์ = "$dir\Servers.txt"
$Data = gc $ชื่อไฟล์

foreach ($Row ใน $Data)
    {
    $Position = $Row.IndexOf(",")
    $เซิร์ฟเวอร์ = $Row.Substring(0, $ตำแหน่ง)
    $File = $Row.Substring($Position + 1)

    $CPart = @{
       ชื่อ = "ซีพาร์ท"
       เส้นทาง = "\$เซิร์ฟเวอร์\C$"
       #Path = "ระบบไฟล์::\$เซิร์ฟเวอร์\C$"
    }

    $อีพาร์ท = @{
       ชื่อ = "อีพาร์ท"
       เส้นทาง = "\$เซิร์ฟเวอร์\E$"
       #Path = "ระบบไฟล์::\$เซิร์ฟเวอร์\E$"
    }

    @($CPart, $EPart) | สำหรับแต่ละวัตถุ {
        ถ้า (เซิร์ฟเวอร์ $ เหมือน "*.mydomain.com") {$session = ใหม่-PSSession -คอมพิวเตอร์ $เซิร์ฟเวอร์ - ข้อมูลรับรอง MYDOMAIN\userid -ErrorAction Stop}
        อื่น {$Session = New-PSSession -Computer $Server -ErrorAction Stop}
        เรียกใช้คำสั่ง -Session $Session -ScriptBlock {$Result = Get-ChildItem -Recurse -Path $_.Path | Where-Object {$_.Name -match '$File'};return $Result}
        ผลลัพธ์ $
        #$item = Get-ChildItem -Recurse -Path $_.Path | Where-Object {$_.Name -match '$File' -and }
        #เขียน-โฮสต์ $item
    }
}
    
<#foreach (เซิร์ฟเวอร์ $ ในเซิร์ฟเวอร์ $) 
    {
    "\$เซิร์ฟเวอร์\C$" | Get-ChildItem -recurse -filter $FileList | เลือกไดเร็กทอรี ชื่อ | เขียนโฮสต์ $_.Directory + "\" + $_.Name
    "\$เซิร์ฟเวอร์\E$" | Get-ChildItem -recurse -filter $FileList | เลือกไดเร็กทอรี ชื่อ | เขียนโฮสต์ $_.Directory + "\" + $_.Name
}

$columnToGet = 0
$คอลัมน์ = gc $ชื่อไฟล์ | 
   %{ $_.แยก(",")[$columnToGet] }
$คอลัมน์
#>
br flag
ดูคลาส `CIM_DataFile` คุณสามารถใช้ CIM หรือ WMI เพื่อเรียกมันด้วยระบบเป้าหมาย ไดรฟ์ และไฟล์ ... และมันจะส่งคืนข้อมูลเกี่ยวกับสิ่งที่พบ
cn flag
ขอบคุณสำหรับคำแนะนำนี้. ฉันอ่านทั้งสองอย่าง (https://powershell.one/wmi/root/cimv2/cim_datafile) และดูเหมือนว่าพวกเขาห้ามไม่ให้ค้นหาไฟล์ระยะไกลแบบเรียกซ้ำเนื่องจาก WMI จะรวบรวมเนื้อหาทั้งหมดของพาร์ติชันก่อนที่จะทำการกรองใด ๆ (การหา). ฉันกำลังมองหาใครสักคนที่จะช่วยฉันใช้ get-childitem แบบเรียกซ้ำบนพาร์ติชันเซิร์ฟเวอร์ระยะไกลโดยหวังว่าจะไม่ใช้เวลานานตลอดทั้งวัน
br flag
cmdlet `Get-ChildItem` จะต้องอ่านผ่านวอลุ่มทั้งหมดเพื่อค้นหาไฟล์ใด ๆ _หากคุณไม่ทราบแผนผัง dir เพื่อจำกัดการค้นหาไปที่_ ///// คำสั่ง robocopy ที่มีตัวเลือก "รายการเท่านั้น" จะค่อนข้างเร็ว ... และ - เช่นเดียวกับ G-CI cmdlet - สามารถเรียกใช้ด้วย `Invoke-Command` เพื่อเรียกใช้สิ่งต่าง ๆ แบบขนานในแต่ละระบบเป้าหมาย . จากนั้นจะส่งผลสุดท้ายกลับไปยังระบบการโทร

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา