Încerc să găsesc un director de fișiere pe o listă de servere la distanță. Vreau sa:
- Utilizați Powershell; obțineți ținte din fișierul text delimitat prin virgulă, adică server1,file1
Notă: fișierul este diferit pentru fiecare server.
- Căutați în partițiile C: și E: un fișier, chiar dacă mai mult de o instanță a acestuia
- Obțineți directorul fișierelor
- Scrieți rezultatul într-un .csv
- Vizualizați rezultatul în fereastra principală Powershell
Iată scenariul cu care am lucrat. Nu pot să-l fac să funcționeze corect. Am nevoie de ajutor:
$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
$FileName = "$dir\Servers.txt"
$Data = gc $FileName
foreach ($Row în $Data)
{
$Posiție = $Row.IndexOf(",")
$Server = $Row.Substring(0, $Posiție)
$File = $Row.Substring($Posiție + 1)
$CPpart = @{
Nume = "CPpart"
Cale = „\$Server\C$”
#Path = "FileSystem::\$Server\C$"
}
$EPpart = @{
Nume = "EPpart"
Cale = „\$Server\E$”
#Path = "FileSystem::\$Server\E$"
}
@($CPpart, $EPpart) | Pentru fiecare obiect {
if ($Server -cum ar fi "*.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 | Unde-Obiect {$_.Name -match '$File'}; returnează $Result}
$Result
#$item = Get-ChildItem -Recurse -Path $_.Path | Unde-Obiect {$_.Name -potriviți cu „$Fișier” -și }
#Write-Host $item
}
}
<#foreach ($Server în $Servers)
{
„\$Server\C$” | Get-ChildItem -recurse -filter $FileList | Selectați Director, Nume | Write-Host $_.Directory + „\” + $_.Nume
„\$Server\E$” | Get-ChildItem -recurse -filter $FileList | Selectați Director, Nume | Write-Host $_.Directory + „\” + $_.Nume
}
$columnToGet = 0
$coloane = gc $fileName |
%{ $_.Split(",")[$columnToGet] }
$coloane
#>