schreckinger 10 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 Hallo Gemeinde Kurz zur Info. Ich beschäftige mich erst seit 10 Tagen mit der Powershell steh also noch richtig am Anfang also bitte vorweg seit mir nicht böse wenn ich vielleicht "dumme" fragen stelle. Danke schon mal im Voraus für eure Hilfe. Also folgendes Ich soll ein Script schreiben welches auf dem Ordner der auf C liegt alle 3 Dateitypen ( *.txt *.doc *.pps) auflistet dann soll das Script einen Vergleich auf ein Netzlaufwerk machen und alle vorher gefunden 3 Dateitypen abgleichen. Wenn das file nicht vorhanden ist soll es dort hinkopiert werden. Wenn es vorhanden ist soll er einfach weiter machen. Alles klar soweit ? Okay jetzt zu meiner Lösung hab mir gedacht .... Ich definiere mir 2 Variablen. $a = dir -Path C:\Benutzer\user1\daten # somit habe ich ja die Daten nu in der Variablen ..... Zwischen Frage reicht mir das so ? weil wenn ich die $a ausgebe sehe ich die Auflistungen 2.tens haben ich mir die Variable $b definiert. $b = dir -Path \\server01\user1\daten2 jetzt besitze ich 2 Variablen ... die Inhalte von Ordner anzeigen. Aber wie löse ich jetzt am besten den Vergleich + Kopier Vorgang ? Hat wer eine Idee oder einen Denkanstoß für mich Danke nochmals für eure Hilfe Lg Schreckinger :D Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 Ich würde das nicht mit solchen Variablen lösen sondern mit einer Schleife. In der Schleife kannst du den Vergleich und das kopieren erledigen. Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 Danke erstmals für deine Antwort. Wie meinst du mit einer Schleife ? Hast du ein Beispiel für mich ? oder kennst du ein gutes Tutarial für Schleifen ? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 Google mal nach "Powershell Foreach". Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 Hallo Dukel ich stell jetzt mal eine Frage kannst du mir anhand eines Beispiel von dir die foreach schleife erklären ? danke Zitieren Link zu diesem Kommentar
magman 10 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 hi Hier mal ein Beispiel was dich auf die richtig Spur führen könnte. $ordner1 = Get-ChildItem c:\ordner1 $ordner2 = Get-ChildItem c:\ordner2 foreach ($datei1 in $ordner1) { write-host $datei1.name foreach($datei2 in $ordner2) { write-host $datei2.name } } kleiner Denkanstoß Martin Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 hi Hier mal ein Beispiel was dich auf die richtig Spur führen könnte. $ordner1 = Get-ChildItem c:\ordner1 $ordner2 = Get-ChildItem c:\ordner2 foreach ($datei1 in $ordner1) { write-host $datei1.name foreach($datei2 in $ordner2) { write-host $datei2.name } } okay i probiere mal das zu erklären damit wir sehn ob ich das auch komplett verstanden habe also 1.) als erster definierst du dir 2 Variablen mit den Ornder inhalten 2.) foreach schleife ( check die Variable $datei1 im $ordner1) #Frage aber wo ist die $datei1 defniert ? #Erklärung für die erste Schleife: es wird nach geschaut ob die Daten im Ornder1 sind 3.) dann wird das gefunden mit Write-Host ausgeben also alle dateien die sich im Ordner befinden, aber noch keine einschränkung auf die 3 Filetypen ? Ist das soweit richtig 4.)2 foreach schleife # gleiche Frage wie vorher wo wird die $datei2 definiert ? # Dateien werden im 2 Ordner verglichen wiederum ohne Filetyp abgleich 5.) Ausgabe der Dateien im Ordner 2 Ist das soweit richtig ? Danke nochmals Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 1.: Ich würde auch bei dem Beispiel nicht die Daten in eine Variable schreiben, sondern das ganze in der Schleife einbauen: Statt: $ordner1 = Get-ChildItem c:\ordner1 foreach ($datei1 in $ordner1) ... folgendes: foreach ($datei1 in (Get-ChildItem c:\ordner1)) ... Spart einen Durchlauf. 2.: #Frage aber wo ist die $datei1 defniert ? Das wird im Foreach definiert. Foreach ist die Kurzform von Foreach-Object. D.h. im Array $ordner1 wird alles in den Klammern ausgeführt und der aktuelle Wert ist in der Variable $datei1. 3.: Wenn die Ordnerstruktur gleich ist muss nicht jede Datei aus der Quelle mit jeder Datei aus dem Ziel vergleichen werden. Einfach statt dem 2. Foreach folgendes (exemplarisch): test-path $datei1.FullName.Replace('c:\ordner1','c:\ordner2') Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 Okay soweit hab ich verstanden mit der Foreach Schleife. Aber was ich noch immer nicht ganz verstehe woher nehme die Befehle für die Foreach Schleife. Sprich wo begebe ich ihm an das er zum Beispiel den vergleich startet und den kopier vorgang macht. Gibt es da so eine Art Datenbank wo die einzeln Befehle drinnen stehen die eine Foreach Schleife verarbeiten kann ? Danke nochmals Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 IN der Schleife kannst du alles machen. Dort kannst du vergleichen und kopieren. Was hast du denn bisher mit Powershell schon gelernt? Was genau willst du vergleichen? Dateiname? Größe? Inhalt? Fang erst mal mit einer Datei an. Gleiche eine Lokale Datei mit einer auf dem Server und kopiere die ggf. Wenn du das hast kannst du deine Schleife drum herum bauen. Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 Hallo Dukel :) Wie gesagt beschäftige ich mich seit ca 10 Tagen mit der Powershell. Brauche die Scripts für meinen neuen Arbeitgeber. Habe einen 5 Tägigen Grundkurs hinter mir und seit letzten Freitag spiele ich mich herum mit der Powershell. Heute hab ich meinen ersten Auftrag bekommen. Aber ich versteh es halt noch nicht so ganz. Woher man die ganzen Befehle nimmt ? Deswegen meine Frage ob es eine Liste mit Befehlen für die Foreach schleife gibt ? Also ich möchte einfach die Daten per Filetyp & per Name vergleichen. Ist die selbe datei oben das soll es so bleiben. Fehlt eine Datei soll er sie von C auf den Share Kopieren. Zitieren Link zu diesem Kommentar
s_sonnen 20 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 Hi schreckinger. Guck' doch mal hier bei Yusuf LDAP://Yusufs.Directory.Blog/ - AD-PowerShell Befehle , oder hier Windows PowerShell Befehle im Überblick oder auch bei MS unter Windows PowerShell (Übersicht) oder Scripting with Windows PowerShell . ciao und viel Erfolg beim scripten M. Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 Danke für die Links die schau ich mir gleich mal an. Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 14. März 2012 Autor Melden Teilen Geschrieben 14. März 2012 So einzig wo ich noch immer hänge ist die Foreach schleife ? Kann man eine foreach schleife im hinteren Teil durch Pipen damit ich mir mit sort-object die filetypen ayaliesrung zu machen ? Wie man Kopiert habe ich noch nicht verstanden ? mit move-item oder ? danke nochmal Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. März 2012 Melden Teilen Geschrieben 14. März 2012 Was meinst du mit hinteren Teil? Im get-childitem? Da kannst du alles machen, was du sonst mit get-childitem machen kannst. Mit Get-Command bekommst du alle Befehle der Powershell. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.