Moin moin,
Ich hab hier ein Problem, das besteht nun schon seit dem 11.07 und bekomme es nun nicht mehr alleine gelöst.
#$TargetFolder = ".\Notes" #$SourceFolder = ".\" #$Extension = "*.id" #ForEach ($File in Get-Childitem $SourceFolder -Include $Extension -Recurse -name) { #Für jede ID die im SourceFolder liegt wird die Schleife #Write-Host "Kopiere ID $File" #Copy-Item $TargetFolder -Recurse .\Notes.$file #Move-Item .\$file .\Notes.$file\Data #(Get-Content .\Notes.$file\Data\setup.txt) | Foreach-Object {$_ -replace 'name.id', $file} | Set-Content .\Notes.$file\Data\setup.txt #Get-ChildItem .\Notes.$file\Data\$file | Get-Content | Foreach-Object {If ($_ -match 'cn=([^"]+)/O=Dfd-hamburg') { #$a = $Matches[1] #}} #pause #(Get-Content .\Notes.$file\Data\setup.txt) | Foreach-Object {$_ -replace 'Vorname Nachname', $Matches[1]} | Set-Content .\Notes.$file\Data\setup.txt # }#Foreach #Write-Host "Fertig!" $a = "Jannis Kroeger" #Ldifde -f C:\TEMP\eos.ldf -r "(objectClass=User)" -l "cn,givenname,sn,homeDirectory" -s eos.lcl -t 389 #Holt aus dem AD alle Nutzer ab #$AD = Get-Content C:\TEMP\eos.ldf #Ließt alle Daten aus der ebend erstellten Datei ein. $array = $a -split "\s+" #Aufteilen des Vor- und Nachnamen #$array[1] #Ausgabe des Nachnamen #$array[0] #Ausgabe des Vornamen #___________________________________________________________________________________________________________________________________________________________# $Path = "C:\TEMP" #Die Dateien in diesem Verzeichnis wird analysiert $FileFilter = "*.txt" #Hier können auch Platzhalter angegeben werden z.B. "File*.txt" $SearchString = "$array[1]" #Hier können reguläre Ausdrücke verwendet werden z.B. "E[q-s]ror: 225" $SearchString2 = "$array[0]" $OutPutFile = "Result.log" $Fullpath = "C:\TEMP\eos.txt" Function Analyze{ #param($Fullpath,$SearchString)#,$OutputFile,$SearchString,$Searchstring2) $LineNumber = 0 $Hits=@() #Array mit den Zeilennummern, die den Searchtext enthalten "{0} {1}" -f $FullPath,[Environment]::NewLine #Dateiname über die Hits schreiben $Lines = @(Get-Content $Fullpath) #Array mit allen Zeilen der Datei $Lines[-1] = "Dummy" #Vorgängerzeile der ersten TextZeile $Lines | ForEach{ #Jede Zeile (=jedes Element des Arrays) untersuchen $LineNumber += 1 #Zeilennummer If($_ -like $array[1]){ #Prüfen, ob $Suchstring in der Zeile enthalten ist $Hits += $LineNumber #Füge die Zeilennummer dem Array Hits hinzu }#If }#Lines $Lines | ForEach{ #Jede Zeile (=jedes Element des Arrays) untersuchen $LineNumber += 1 #Zeilennummer If($_ -like $array[0]){ #Prüfen, ob $Suchstring in der Zeile enthalten ist $Hits += $LineNumber #Füge die Zeilennummer dem Array Hits hinzu }#If }#Lines For($i=0; $i -le $Hits.Count; $i++){ #Alle Zeilennummern mit Hits hochzählen $Value = "" If($Hits[$i] -eq $($Hits[$i-1]+1)) #Wenn zwei Zeilennummern mit Hits aufeinander folgen { $Value += "Zeile {0}: {1} {2}" -f $Hits[$i-1],$Lines[$Hits[$i]-2],[Environment]::NewLine $Value += "Zeile {0}: {1} {2}" -f $Hits[$i],$Lines[$Hits[$i]-1],[Environment]::NewLine $Value #Eventuell auskommentieren, wenn keine Bildschirmausgabe gewünscht ist Add-Content -Path $Path\$OutPutFile -Value $Value #auskommentieren, wenn keine Fileausgabe gewünscht ist Remove-Variable Value -EA 0 }#if }#for }#function $LogFiles = Get-ChildItem $Patch #-path $Path #-filter $FileFilter $LogFiles | ForEach { Analyze #-FullPath $_.FullName #-OutPutFile $OutPutfile -SearchString $SearchString,$Searchstring2 #Funktionsaufruf }
Der Teil über dem laaaaangen Strich funktioniert tadellos!
Was möchte ich eigentlich erreichen? Ich möchte in erster Linie das HomeDir, dass bei den Usern angegeben ist in einer Variable haben um es später als Pfad nutzen zukönnen, damit das Ganze über dem Strich dort hin kopiert werden kann.
Der Accountname ist allerdings nicht so einfach ermittel bar und deshalb gehe ich hier solche Umwege über den Vor- und Nachnamen die allein schon ein Gefrikel waren herauszubekommen.
Dsquery und dsget hab ich mir mal angeguckt aber nie zum laufen bekommen, außerdem fände ich es sehr praktisch, wenn diejenigen die befugt sind dieses Skript zu starten, nicht auf die RSAT angewiesen sind.
Habt ihr vielleicht Durchblick oder eine Idee?
KOMMENTAR: Wenn die erste Zeile gefunden wurde mit dem Nachnamen, muss die folgende Zeile mit dem Vornamen passen. In der darauf folgenden Zeile steht dann das HomeDir:
sn: Kroeger givenName: Jannis homeDirectory: \\XXXX02\wtshome$\KroegerJ
P.S.: Das Skript hört nicht auf zu laufen, mit folgender Ausgabe:
Kroeger Jannis C:\TEMP\eos.txt C:\TEMP\eos.txt C:\TEMP\eos.txt (...)
Danke
Jannis