none
Mit Hilfe einer Datei, Dateien anpassen (Text) RRS feed

  • Frage

  • Moin moin,

    @OT (kurz zu meiner Person)

    ich bin momentan Azubi, Fachinformatiker Systemintegration, und sagen wir mal ein kleiner Wettbewerb ist bei mir in der Abteilung zwischen zwei Anwendungsentwicklern und mir entbrannt. Noch vormeiner Zeit hat sich herauskristallisiert, dass C# und Powershell viel genutzt werden wird für so allerlei Alltäglichesleiden in der Abteilung. Sie teilten sich das ganze auf zu lernen (einige Jährchen sind dafür schon drauf gegangen). Nun zu mir, ich bekomme mittlerweile schon etwas mehr mit von AD-Pflege ect. pp. und hab für monotone Arbeit mir Batches gebaut. Der Powersheller bei uns schmunzelte und legte mir eben dieses vor die Füße, als ich mit Batches mich in nicht nur einer Sackgasse befand. Darum hab ich eigentlich vor mich mit Powershell zu befassen und mit etwas Fleiß und Glück zu einem Guru zu werden. Nun Folgendes Projekt ergab sich für mich und wo ich hänge wird weiter unten erläutert:

    @BTT

    Der Gedanke, ich habe eine(/oder mehrere) "blubb.id" File in einem Ordner ".\". Diese sollten den Ordner .\MeisterEder\Unterordner*.*\ kopieren und umbenennen, (.\MeisterEder.blubb.id\Unterordner\ zu guterletzt wird "blubb.id" in den Unterordner verschoben und eine "Setup.txt" im Unterordner angepasst. Die Zeile sollte entsprechend gefunden und mit dem "blubb.id" ersetzt werden.

    Da hab ich mich durch geknobbelt:

    $TargetFolder = ".\MeisterEder"
    $SourceFolder = ".\"
    $Extension = "*.id"
    $waitseconds = 1
    $Files = Get-Childitem $SourceFolder -Include $Extension -Recurse -name
    
    foreach ($File in $Files)
    	{
    	if ($Files -ne $NULL)
    		{
    		write-host "Kopiere ID $File"
    		Copy-item $TargetFolder -Recurse .\Notes.$file
    		start-sleep -s $waitseconds
    		Move-item .\$file .\MeisterEder.$file\Data
    		(Get-Content .\MeisterEder.$file\Data\setup.txt) | Foreach-Object {$_ -replace 'name.id', $file} | Set-Content .\MeisterEder.$file\Data\setup.txt}
    	else
    		{
    		write-host "Fertig!"
    		}
    	}

    Nun zu dem Punkt wo ich schon etliche Stunden dran gedreht hab und bei Euch sowie euren Blogs in den Signaturen gewühlt hab:

    In dieser Setup.txt gibt es noch eine weitere Zeile in der steht drin: "irgendeinschmu=Vorname Nachname"

    In einer anderen File steht exakt: "Nachname1";"Vorname1";"";""

    Natürlich können in dieser Text File mehrere unterschiedliche untereinander stehen. Der Name der *.id-Files besteht aus den ersten Buchstaben des Vornamens (1 Buchstabe wenn der Name nicht im AD angelegt war 2 wenn doch usw.) und dem Nachnamen bis der Dateiname 8 Zeichen maximal beträgt. (Beispiel Andreas Müller -> amueller.id ; Amelie Müller -> ammuelle.id)

    Nun ich möchte mit dem schon funktionierenden Skript, die jeweilige Setup.txt anpassen, sodass der Vor- und Nachname passend zur *.id-File, die in dasselbe Verzeichnis kopiert wurde, ersetzt werden.

    Ich hab schon Import-CSV, Export-CSV und etliches mehr mir mal angeguckt nix führte zum Erfolg...

    Die Kommentarreste von den letzten neuen Ansätzen sind:

    #	New-Item .\$GCNames.csv -Type file -force
    #	Add-Content .\$GCNames.csv "Nachname;Vorname;;"
    #	(Get-Content $Names) | Add-Content .\$GCNames.csv
    
    #Get-Content $Names | Foreach-Object {
    #    $Name = $_.substring($_.IndexOf('"') + 1 ,$_.IndexOf('"') - $_.IndexOf(';') - 1)
    #    $_.Replace("Vorname Nachname",$Name)
    #} | Set-Content ".\Test_Neu.txt"

    Mit denen ich iwie auch nicht zum Ziel gelangen könnte wie mir scheint. ich Brauch mal Schubser die mich zurück auf einen Pfad von Erfolg bringen. Ich hab mich alleine schon durch den Schnippsel oben in Powershell verliebt.

    Habt Dank fürs Lesen!

    Jannis

    P.S.: Noch etwas mit dem ich Teilweise erfolgreich die Quelle zurecht gestutzt hatte, danach wieder eine Sackgasse:

    $waitseconds = 1
    	Copy-Item .\newuser.txt .\newid.txt
    start-sleep -s $waitseconds
    	Set-Content .\ps1.txt "Nachname;Vorname;;"
    	(Get-Content .\newid.txt) | %{$_ -replace '"',""} | Add-Content .\ps1.txt
    	(Get-Content .\ps1.txt) | Export-CSV .\ps1.csv -delimiter ";" -encoding "unicode" -NoType


    • Bearbeitet Jannis K Montag, 11. Februar 2013 15:17
    Montag, 11. Februar 2013 14:21

Antworten

  • Hier der Algorithmus zum erzeugen der AD-Namen, die du dann gegen das AD testen kannst, ob es diese Namen schon gibt.

    $ErrorActionPreference = 'Continue'
    
    Function Get-ADNames {
    # Der Name wird aus den ersten Buchstaben des Vornamens und dem Nachnamen generiert
    # und hat eine feste Länge von $Laenge Zeichen.
    # Es wird bei jedem Durchlauf mit dem nächsten Zeichen 1++ im Vornamen ergänzt und nach rechts gerückt.
    # Ist der Vorname durchlaufen, wird im gesamten Namen (Vorname + Nachname) mit der $Laenge nach rechts bis zum Ende gerückt.
    
        [CmdletBinding()]
    	param(
            [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True)]
            [ValidateNotNullOrEmpty()]
    		[String]$Vorname,
            [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True)]
            [ValidateNotNullOrEmpty()]
    		[String]$Nachname,
    		[ValidateRange(2,64)]
    		[System.UInt32]$Laenge = 8
        )
    
        Process{
            
            # Maximale Anzahl der verfügbaren Zeichen =  Vorname + Nachname
            $MaximalWert = ($Vorname + $Nachname).Length
            
            If($Maximalwert -lt $Laenge ) {
                # Wenn der Vorname + Nachname winiger Zeichen als  $Laenge Zeichen enthält, dann Alarm schlagen
                throw "$Vorname + $Nachname ist kürzer als $Laenge Zeichen!"
            }
            
            # Testen ob der Nachname kürzer ist als $Laenge Zeichen
            If($Nachname.Length -lt $Laenge) {
                # Startwert für die Verschiebung des Vornamens ($AnzahlVorname) Festlegen.
    			# Damit ein zu kurzer Nachname aufgefüllt wird und die geforderte $Laenge Zeichen ergibt.
               $StartWert =  $Laenge - $Nachname.Length
            }
            Else {
              # Nachname ist länger oder = $Laenge; $AnzahlVorname startet bei 1
              $StartWert =  1  
            }
            
    		# Startwert für die Verschiebung Vorname + Nachnamen nach rechts beginnt beim zweiten Zeichen
    		$StartwertLinksNachRechts = 1		
    		
    		# Alle Zeichen Vorname + Nachname, mit dem ermittelten $Startwert durchlaufen
            For($AnzahlVorname = $StartWert; $AnzahlVorname -le $MaximalWert;$AnzahlVorname++){
                
                # Wenn im Vornamen genug Zeichen vorhanden sind, werden die Buchstaben vom Vornamen zum Nachnamen Addiert.
                If(($AnzahlVorname -le $Vorname.length) -and ($AnzahlVorname -le $Laenge)) {
                    $Vorname.Substring(0,$AnzahlVorname) + $Nachname.SubString(0,$Laenge-$AnzahlVorname)
                } # End IF Begin ELSE
                Else {
    				
    				# Die Zeichen vom Vornamen sind aufgebraucht.
    				# Wir rücken in den Zeichen von  Vorname + Nachnamen, nach rechts bis zum ende vor
    				If(($StartwertLinksNachRechts + $Laenge) -le $MaximalWert){
    					# Verschiebung Vorname + Nachnamen an das rechte ende rechts
    					($Vorname + $Nachname).SubString($StartwertLinksNachRechts,$Laenge)
    					# für die nächste Testrunde den Startwert ein Zeichen nach Rechts verschieben
    					$StartwertLinksNachRechts++
    				} # End IF
    				
                }  # End Else    
            } # End FOR
        }  # End Process
    } # End Function Get-ADNames
    
    "\\\\\\\\\\\\\\\\\\\\\/////////////////////"
    "Test mit einer Standard Länge von 8"
    ""
    "---------------------------------------"
    "Test zu wenig Zeichen = (Error!!)"
    "---------------------------------------"
    Get-ADNames -Vorname "J" -Nachname "Lo"
    "---------------------------------------"
    "Test 8 Zeichen Name"
    "---------------------------------------"
    Get-ADNames -Vorname "Di" -Nachname "Ladies"
    "---------------------------------------"
    "Test Normaler Vorname, Kurzer Nachname"
    "--------------------------------------"
    Get-ADNames -Vorname "Gates" -Nachname "Bill"
    "---------------------------------------"
    "Test Kurzer Vorname, Langer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "Zorro" -Nachname "RächerderEntnervtenWitwenUndWaisen"
    "---------------------------------------"
    "Test Langer Vorname, kurzer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "GutenTagIchWeissNichtObSieSchonWussten" -Nachname "Hoffmann"
    ""
    "\\\\\\\\\\\\\\\\\\\\\/////////////////////"
    "Test mit einer Länge von 2"
    ""
    "---------------------------------------"
    "Test Länge von 2 J-LO"
    "---------------------------------------"
    Get-ADNames -Vorname "J" -Nachname "Lo" -Laenge 2 
    "---------------------------------------"
    "Test Länge von 2; 8 Zeichen Name"
    "---------------------------------------"
    Get-ADNames -Vorname "Di" -Nachname "Ladies" -Laenge 2
    "---------------------------------------"
    "Test Länge von 2; Normaler Vorname, Kurzer Nachname"
    "--------------------------------------"
    Get-ADNames -Vorname "Gates" -Nachname "Bill" -Laenge 2
    "---------------------------------------"
    "Test Länge von 2; Kurzer Vorname, Langer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "Zorro" -Nachname "RächerderEntnervtenWitwenUndWaisen" -Laenge 2
    "---------------------------------------"
    "Test Länge von 2; Langer Vorname, kurzer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "GutenTagIchWeissNichtObSieSchonWussten" -Nachname "Hoffmann" -Laenge 2
    ""
    "\\\\\\\\\\\\\\\\\\\\\/////////////////////"
    " Test mit einer Länge von 19"
    ""
    "---------------------------------------"
    "Test Länge von 19; Kurzer Vorname, Langer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "Zorro" -Nachname "RächerderEntnervtenWitwenUndWaisen" -Laenge 19
    "---------------------------------------"
    "Test Länge von 19; Langer Vorname, kurzer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "GutenTagIchWeissNichtObSieSchonWussten" -Nachname "Hoffmann" -Laenge 19



    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Bearbeitet Peter Kriegel Mittwoch, 13. Februar 2013 11:32
    • Als Antwort markiert Jannis K Mittwoch, 27. Februar 2013 07:49
    Mittwoch, 13. Februar 2013 11:25

Alle Antworten

  • Hallo Jannis!

    Dein Problem ist anscheinend recht komplex und dein Text ist schwer zu verstehen.
    Deshalb kann ich dir hier nur ansatzweise helfen.

    Der erste Code den du gepostet hast ist etwas ungewöhnlich:
    1."If ($Files -ne $NULL)" ist nicht nötig, da das ForEach nur tätig wird wenn mindestens ein Objekt vorhanden ist.
    2. "start-sleep -s $waitseconds" was soll diese Zeile bewirken ?
    3. "write-host "Fertig!"" Wenn alle Dateien von der ForEach Schleife abgearbeitet wurden dann ist die Verarbeitung fertig!

    Ich würde den Code so ändern:

    $TargetFolder = ".\MeisterEder"
    $SourceFolder = ".\"
    $Extension = "*.id"
    
    ForEach ($File in Get-Childitem $SourceFolder -Include $Extension -Recurse -name) {
    		Write-Host "Kopiere ID $File"
    		Copy-Item $TargetFolder -Recurse .\Notes.$file
    		Move-Item .\$file .\MeisterEder.$file\Data
    		(Get-Content .\MeisterEder.$file\Data\setup.txt) | Foreach-Object {$_ -replace 'name.id', $file} | Set-Content .\MeisterEder.$file\Data\setup.txt
    	}
        
    Write-Host "Fertig!"

    So nun zu deinem zweiten Problem, diese gehen wir schrittweise an:

    Du schreibst du hast eine Datei mit Namen: "Nachname1";"Vorname1";"";"".
    Diese Datei scheint mir einen CSV Datei zu sein.
    Eine CSV Datei muss bestimmten Regeln folgen!
    Siehe: http://de.wikipedia.org/wiki/CSV_%28Dateiformat%29
    Hat diese Datei eine Headerzeile mit jeweils einer Überschrift pro Spalte?

    Ich entnehme deinem Code, dass du schon weisst das PowerShell Objekte verarbeitet!?
    Beim einlesen von einer CSV Datei wird jede Zeile in ein Objekt verwandelt.
    Die Spalten der CSV Datei können dan als Objekt Properties mit der Spaltenüberschrift abgerufen werden.

    Beispiel einer CSV Datei; mit Komma getrennte Werte:

    Nachname, Name, Alter, Telefonnr
    Müller,Claudia,22,+49362771288
    Meier,Sabine,19,00128715529
    Schmidt,Kerstin,25,+331282176356927

    $csv = "C:\temp\Daten.csv"
    
    # Test CSV Datei anlegen
    'Nachname, Name, Alter, Telefonnr','Mueller,Claudia,22,+49362771288','Meier,Sabine,19,00128715529','Schmidt,Kerstin,25,+331282176356927' | Out-File $csv
    
    ForEach($RowObject in (Import-CSV $csv)){
    
    # Nachname Anzeigen
    $RowObject.Nachname
    
    # Vorname Anzeigen
    $RowObject.Name
    
    }


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Dienstag, 12. Februar 2013 11:30
  • Hallo Peter,

    danke das du dich durch meinen wirren Text durch geboxt hast.

    1. Danke, da hab ich einfach unnötige zeichen getippt hatte mir aber bis dato geholfen mich nicht in diversen Tutorials zu verlaufen.

    2. Diese Zeile sollte mir etwas Zeit geben die Ausgabe zu lesen um (als der Code entstand) nachzuvollziehen was eigentlich gemacht wird und ob es das ist was ich wollte. Ausserdem hatte ich zu erst schiss das er irgendwo stolpern könnte. Nach dem ich ein Test mit 628 Files gemacht hatte und diese Stichproben artig durchforstet hab, bin ich mir nun total sicher das alles stabil ist ;-)

    3. s.1 ; Aber danke das du mir die Ausgabe mit eingebaut hast!

    Zu meinem zweiten Problem:

    Meine Ausgangsdatei sieht genau so aus:

    "Duck";"Dagobert";"";""
    "Gates";"Bill";"";""
    "Cook";"Tim";"";""
    "Kamprad";"Ingvar";"";""

    Was ich schon mal gebaut hab:

    	Copy-Item .\newuser.txt .\newid.txt
    	Set-Content .\ps1.txt "Nachname;Vorname;;"
    	(Get-Content .\newid.txt) | %{$_ -replace '"',""} | Add-Content .\ps1.txt
    	(Get-Content .\ps1.txt) | Export-CSV .\ps1.csv -delimiter ";" -encoding "unicode" -NoType

    damit ich entsprechend dies herausbekomme "ps1.csv":

    Nachname;Vorname;;
    Duck;Dagobert;;
    Gates;Bill;;
    Cook;Tim;;
    Kamprad;Ingvar;;

    1. Nun müsste ich theoretisch ja noch die letzten beiden ";" löschen damit es auf geht...

    2. Es soll nun der Vor- und Nachname in der "setup.txt" ersetzt werden. Ich hab aber ja lediglich eine schwammige Regel mit der ich überprüfen könnte welcher Name in welcher "setup.txt" ersetzt werden muss.

    Regel: Der Dateiname der $File wird aus dem ersten Buchstaben des Vornamens und dem Nachnamen genertiert und kann maximal 8 zeichen lang sein. Sollte die Kombination mit Vor- und Nachname schon im AD vorhanden gewesen sein, so wird der nächste Buchstabe im Vornamen ergänzt. Danach greift wieder maximal 8 Zeichen insgesamt.

    Ich kann also eigentlich nicht den vollständigen Nachnamen voraussetzten oder iwas vom Vornamen. Wenn ich den Schritt weglasse kann ich doch garnicht sicherstellen ob der Richtige Vor- und Nachname in der richtigen "setup.txt" geändert wurde oder doch?

    Dienstag, 12. Februar 2013 13:02
  • Ok ! Damit deine Ausgabedatei eine vernünftige CSV Datei wird braucht sie einen Header!
    Du machst das schon richtig !
    Damit du die ganzen leeren Semikolons nicht löschen musst, schlag ich vor den Header auf die Leeren Spalten zu erweitern.
    Etwa so:

    $Source = ".\newid.txt"
    $CSV = ".\ps1.txt"
    
    # Kopieren der Dateien ist unnötig, Da eine neue Datei ps1.txt entsteht!
    #Copy-Item .\newuser.txt .\newid.txt
    
    # Headerzeile schreiben ,Überschriften für die leeren Spalten werden auch mit angegeben!
    Set-Content $CSV "Nachname;Vorname;LeerSpalte1;LeerSpalte2"
    
    #  entfernen der Anführungszeichen ist unnötig! Diese gehören zum CSV Standard!
    # Daten in die Datei einfügen
    Get-Content $Source | Add-Content $CSV
    
    # nun habe wir eine Korrekte CSV Datei!
    # Die leeren Spalten werden einfach nicht genutzt!
    ForEach($RowObject in (Import-CSV $CSV -Delimiter ";")) {
        
        # Nachname Anzeigen
        $RowObject.Nachname
    
        # Vorname Anzeigen
        $RowObject.Vorname
    }

    Die Regel ist allerdings sehr schwammig, und muss nach einer gewissen Zeit auf Fehler laufen!
    Wenn man z.B. mehrere  "Anne Meier" eingestellt werden!
    Das wird sehr schwierig!


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!



    Dienstag, 12. Februar 2013 14:07
  • Absolut faszinierend was du mit einem Bruchteil an Zeichen tippst und das gleiche Endergebnis erzielt. Evtl. kann ich bei dem Anwendungsentwickler ne richtige Regel erwirken. Sollte ja grundsätzlich machbar sein.

    Aber schön das mein Problem nun verstanden ist und es wenigstens nicht ganz an mir lag warum es soviele Sackgassen gibt (für mich zumindestens).

    Ich bin jetzt 2 tage außer Haus und werde entsprechend mich am Freitag mit Codeschnippseln wieder melden.

    Dankö
    Jannis

    Dienstag, 12. Februar 2013 15:27
  • Hier der Algorithmus zum erzeugen der AD-Namen, die du dann gegen das AD testen kannst, ob es diese Namen schon gibt.

    $ErrorActionPreference = 'Continue'
    
    Function Get-ADNames {
    # Der Name wird aus den ersten Buchstaben des Vornamens und dem Nachnamen generiert
    # und hat eine feste Länge von $Laenge Zeichen.
    # Es wird bei jedem Durchlauf mit dem nächsten Zeichen 1++ im Vornamen ergänzt und nach rechts gerückt.
    # Ist der Vorname durchlaufen, wird im gesamten Namen (Vorname + Nachname) mit der $Laenge nach rechts bis zum Ende gerückt.
    
        [CmdletBinding()]
    	param(
            [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True)]
            [ValidateNotNullOrEmpty()]
    		[String]$Vorname,
            [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True)]
            [ValidateNotNullOrEmpty()]
    		[String]$Nachname,
    		[ValidateRange(2,64)]
    		[System.UInt32]$Laenge = 8
        )
    
        Process{
            
            # Maximale Anzahl der verfügbaren Zeichen =  Vorname + Nachname
            $MaximalWert = ($Vorname + $Nachname).Length
            
            If($Maximalwert -lt $Laenge ) {
                # Wenn der Vorname + Nachname winiger Zeichen als  $Laenge Zeichen enthält, dann Alarm schlagen
                throw "$Vorname + $Nachname ist kürzer als $Laenge Zeichen!"
            }
            
            # Testen ob der Nachname kürzer ist als $Laenge Zeichen
            If($Nachname.Length -lt $Laenge) {
                # Startwert für die Verschiebung des Vornamens ($AnzahlVorname) Festlegen.
    			# Damit ein zu kurzer Nachname aufgefüllt wird und die geforderte $Laenge Zeichen ergibt.
               $StartWert =  $Laenge - $Nachname.Length
            }
            Else {
              # Nachname ist länger oder = $Laenge; $AnzahlVorname startet bei 1
              $StartWert =  1  
            }
            
    		# Startwert für die Verschiebung Vorname + Nachnamen nach rechts beginnt beim zweiten Zeichen
    		$StartwertLinksNachRechts = 1		
    		
    		# Alle Zeichen Vorname + Nachname, mit dem ermittelten $Startwert durchlaufen
            For($AnzahlVorname = $StartWert; $AnzahlVorname -le $MaximalWert;$AnzahlVorname++){
                
                # Wenn im Vornamen genug Zeichen vorhanden sind, werden die Buchstaben vom Vornamen zum Nachnamen Addiert.
                If(($AnzahlVorname -le $Vorname.length) -and ($AnzahlVorname -le $Laenge)) {
                    $Vorname.Substring(0,$AnzahlVorname) + $Nachname.SubString(0,$Laenge-$AnzahlVorname)
                } # End IF Begin ELSE
                Else {
    				
    				# Die Zeichen vom Vornamen sind aufgebraucht.
    				# Wir rücken in den Zeichen von  Vorname + Nachnamen, nach rechts bis zum ende vor
    				If(($StartwertLinksNachRechts + $Laenge) -le $MaximalWert){
    					# Verschiebung Vorname + Nachnamen an das rechte ende rechts
    					($Vorname + $Nachname).SubString($StartwertLinksNachRechts,$Laenge)
    					# für die nächste Testrunde den Startwert ein Zeichen nach Rechts verschieben
    					$StartwertLinksNachRechts++
    				} # End IF
    				
                }  # End Else    
            } # End FOR
        }  # End Process
    } # End Function Get-ADNames
    
    "\\\\\\\\\\\\\\\\\\\\\/////////////////////"
    "Test mit einer Standard Länge von 8"
    ""
    "---------------------------------------"
    "Test zu wenig Zeichen = (Error!!)"
    "---------------------------------------"
    Get-ADNames -Vorname "J" -Nachname "Lo"
    "---------------------------------------"
    "Test 8 Zeichen Name"
    "---------------------------------------"
    Get-ADNames -Vorname "Di" -Nachname "Ladies"
    "---------------------------------------"
    "Test Normaler Vorname, Kurzer Nachname"
    "--------------------------------------"
    Get-ADNames -Vorname "Gates" -Nachname "Bill"
    "---------------------------------------"
    "Test Kurzer Vorname, Langer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "Zorro" -Nachname "RächerderEntnervtenWitwenUndWaisen"
    "---------------------------------------"
    "Test Langer Vorname, kurzer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "GutenTagIchWeissNichtObSieSchonWussten" -Nachname "Hoffmann"
    ""
    "\\\\\\\\\\\\\\\\\\\\\/////////////////////"
    "Test mit einer Länge von 2"
    ""
    "---------------------------------------"
    "Test Länge von 2 J-LO"
    "---------------------------------------"
    Get-ADNames -Vorname "J" -Nachname "Lo" -Laenge 2 
    "---------------------------------------"
    "Test Länge von 2; 8 Zeichen Name"
    "---------------------------------------"
    Get-ADNames -Vorname "Di" -Nachname "Ladies" -Laenge 2
    "---------------------------------------"
    "Test Länge von 2; Normaler Vorname, Kurzer Nachname"
    "--------------------------------------"
    Get-ADNames -Vorname "Gates" -Nachname "Bill" -Laenge 2
    "---------------------------------------"
    "Test Länge von 2; Kurzer Vorname, Langer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "Zorro" -Nachname "RächerderEntnervtenWitwenUndWaisen" -Laenge 2
    "---------------------------------------"
    "Test Länge von 2; Langer Vorname, kurzer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "GutenTagIchWeissNichtObSieSchonWussten" -Nachname "Hoffmann" -Laenge 2
    ""
    "\\\\\\\\\\\\\\\\\\\\\/////////////////////"
    " Test mit einer Länge von 19"
    ""
    "---------------------------------------"
    "Test Länge von 19; Kurzer Vorname, Langer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "Zorro" -Nachname "RächerderEntnervtenWitwenUndWaisen" -Laenge 19
    "---------------------------------------"
    "Test Länge von 19; Langer Vorname, kurzer Nachname"
    "---------------------------------------"
    Get-ADNames -Vorname "GutenTagIchWeissNichtObSieSchonWussten" -Nachname "Hoffmann" -Laenge 19



    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Bearbeitet Peter Kriegel Mittwoch, 13. Februar 2013 11:32
    • Als Antwort markiert Jannis K Mittwoch, 27. Februar 2013 07:49
    Mittwoch, 13. Februar 2013 11:25
  • Guten Morgen,

    *Bauklötze staun*, ;-)

    Da muss ich mich mal richtig durch lesen. Soweit ich das nun mitbekommen hab drängelt sich ein Gedanke durch meinen wirren Kopf:
    Die Namen die aus dem AD gezogen und entsprechend nach der Regel angelegt werden kann ich dann ja streng genommen mit den Namen der $File abgleichen. Wenn die passen kann ich die $Vorname und $Nachname aus der Operation in der "setup.txt" anpassen, und alles passt soweit.

    Und die Namen die geprüft werdeb sollen, kommen aus der $CSV...
    Damit sollte das ganze eigentlich fluppen oder?

    Dann mich mich mal ran halten und das ganze zusammen knobeln.
    Ich meld mich dann wie's aussieht.

    Danke!
    Jannis

    Und ein schönes Wochenende, (sollte ich heute nicht mehr schreiben)!

    Freitag, 15. Februar 2013 07:57
  • Sind deine Fragen beantwortet Jannis? Dann markiere bitte die Antworten als solche. Danke,

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Dienstag, 19. Februar 2013 15:17
    Moderator
  • Entschuldigt bitte meine Abwesenheit, ich war die letzte Woche in einer anderen Abteilung und bin auch diese Woche wieder gewechselt. Nun habe ich allerdings auch Zeit entsprechend mich mit dem Code zu befassen. Ist dieser die Antwort auf meine Frage werde ich selbstverständlich diese als solche markieren.

    Grüße

    Jannis

    Montag, 25. Februar 2013 08:14