ฉันพยายามค้นหาไดเร็กทอรีไฟล์ในรายการเซิร์ฟเวอร์ระยะไกล ฉันต้องการ:
- ใช้ Powershell; รับเป้าหมายจากไฟล์ข้อความที่คั่นด้วยเครื่องหมายจุลภาค เช่น server1,file1
หมายเหตุ: ไฟล์จะแตกต่างกันสำหรับแต่ละเซิร์ฟเวอร์
- ค้นหาพาร์ติชัน C: และ E: เพื่อหาไฟล์ แม้ว่าจะมีมากกว่าหนึ่งอินสแตนซ์ก็ตาม
- รับไดเร็กทอรีไฟล์
- เขียนผลลัพธ์เป็น .csv
- ดูผลลัพธ์ในหน้าต่างหลักของ 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] }
$คอลัมน์
#>