schreckinger 10 Geschrieben 19. März 2012 Melden Teilen Geschrieben 19. März 2012 Guten Morgen Leute! Also ich soll heute einen Datenabgleich bauen, der auf das Datum der Datei sowie den Namen vergleicht. Wenn eine gleiche Datei Vorhanden ist soll er abbrechen. $src= C:\Bentzer\Daten1 $dst= Z:\Daten if ($src in $dst) jetzt stellst sich mir die Frage wie am Besten das ein Baue ? Muss ich die If Schleife doch in eine Foreach umwandeln ? oder reicht eine If abfrage für das Script ? Danke lg Zitieren Link zu diesem Kommentar
magman 10 Geschrieben 19. März 2012 Melden Teilen Geschrieben 19. März 2012 Hi du musst beides einsetzen. erstmal durchläufst du die schleife mit den einzelnen Dateien und vergleicht diese dann mit einer if abfrage. Gruss Martin PS ich habe deine einträge letzte woche schon gesehen und ich finde das dieses Forum nicht dazu da ist, dass du so lange fragst bis du ein fertiges script hast. Wir helfen alle gerne! Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 19. März 2012 Autor Melden Teilen Geschrieben 19. März 2012 Hallo magman Danke erstmals für deine Hilfe. Mir geht es vorallem darum wenn ich mal so ein Beispiel Script habe wo diese Abgleichung eingebaut ist werde ich es auch besser verstehen. Nur geht mir manchmal das Wie ab ? Hab eine Idee im Kopf wie es funktionieren kann weiß aber nicht wie ich es umsetze ? Bin am lesen von Power in Action und google auch wie ein Wilder. Nur möchte ich dieses Forum nutzen um mich weiterzubilden. Und da gibt es keinen besseren Ort als dieses Forum hier wo lauter Experten sind. Ich brauche einfach mal das Erlebnis das es funktioniert und dann erlege ich mir die schleife und werde Sehn wie es funktioniert. Damit ich das Schleifen System verstehe. :) Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 19. März 2012 Melden Teilen Geschrieben 19. März 2012 Reichte mein fast fertiges Script nicht um zu verstehen? Schleife: foreach($file in (Get-ChildItem $src -Recurse -include *.txt,*.doc,*.ppt)){ } vergleich: if(!(test-path $dstfile)){ } Powershell 101: IF .. Else - Flaphead on TechNet - Site Home - TechNet Blogs Using the Foreach-Object Cmdlet Um Grundlagen zu lernen ist ein Forum nicht optimal. Bei konkreten Fragen helfen wir alle gerne. Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 19. März 2012 Autor Melden Teilen Geschrieben 19. März 2012 #Quelle $src = "C:\filetyp" #Ziel $dst = "C:\filetyp1" #Schleife über Dateisystem. $abc = foreach($file in (Get-ChildItem $src -Recurse -include *.txt,*.doc,*.ppt)){ #Dateiname im Ziel $dstfile = $file.FullName.replace("$src","$dst") #Ordner im Ziel $dstfolder = $dstfile.split('\')[0..($dstfile.split('\').length-2)] -join '\' #Testen ob diese Datei NICHT existiert if(!(test-path $dstfile)){ #Testen ob ein Ordner existiert if(!(test-path $dstfolder)){ #Wenn er nicht existiert, dann an anlegen new-item $dstfolder -type directory -recurse }so #Wenn die Datei nicht existiert von der Quelle kopieren copy-item $file.FullName $dstfolder } } #$event = "Das Script mit protokliert" #(get-date).toString() + $event >> c:\log.log #$abc | Select-String "Pfad:$(MyInvocationName)" Also: Bei der If Abfrage fehlt mir jetzt nur noch das wenn eine Datei Vorhanden ist soll er mit dem Kopiervorgang abbrechen ? und in ein Log file schreiben. Müsste ich die erste If Abfrage bearbeiten ? Die if(!(test-path $dstfile)) erweitern oder ? Also dass ich mir hier noch einen Match Operator oder sowas einbaue ? Und das ganze in ein Log file rein zu tun hab ich mir gedacht ich baue : $event = "Das Script mit protokliert" (get-date).toString() + $event >> c:\log.log Aber wie gesagt funktioniert mir das auch nicht so ganz. Und jetzt kommen wir zur Masterfrage wo ich noch komplett Plan soll bin. Wie schaffe ich es die Dateien die Kopiert worden sind in einen String zu speichern ? Im String soll der Dateipfad stehen ? Das sind die Dinge die mich noch beschäftigen :) Bin aber der Lösung noch fern. Danke nochmals für eure Hilfe Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 19. März 2012 Melden Teilen Geschrieben 19. März 2012 Hast du mal meine Links angeschaut? Simple IF, Else $a = "Powershell" IF ($a -eq "PowerShell") { "Statement is True" } ELSE { "Statement is False" } Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 19. März 2012 Autor Melden Teilen Geschrieben 19. März 2012 Simple IF, Else $a = "Powershell" IF ($a -eq "PowerShell") { "Statement is True" } ELSE { "Statement is False" } hab mir die links angeschaut. Frage zu dieser Schleife Wenn ich jetzt für mein Beispiel hernehme: IF ($src -eq $dsc) { "Statement is True" } ELSE { "Statement is False" Muss ich jetzt in dem ersten Zeig das mit dem ERROR Code einbauen damit er mir aus der Schleife spring oder bin am Holzweg ? Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 19. März 2012 Autor Melden Teilen Geschrieben 19. März 2012 Hallo Leute. Ich würde sehr begrüssen wenn mir jemand eine Art Beispiel Sricpt für meine Beispiel zeigen könnte daher ich einfach nicht mehr weiter komme. Mir fehlt die Idee wo ich das mit dem String sowie der Abfrage einbaue. Danke nochmals Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 19. März 2012 Melden Teilen Geschrieben 19. März 2012 Hallo, leider kann ich dir bei PS nicht helfen, ich stehe da noch am Anfang. Frage: geht es um eine Programmierübung zur Ausbildung oder tatsächliche ein Skript zur Anwendung? Ist Robocopy oder Synctoy nicht geeignet? Gruß Edgar Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 20. März 2012 Autor Melden Teilen Geschrieben 20. März 2012 Guten Morgen Gemeinde. Ich brauche ein Sricpt für meinen Arbeitgeber. Heute sollte ich fertig werden. Leider steh ich noch immer vor den selben Problemen. #Quelle $src = "C:\filetyp" #Ziel $dst = "C:\filetyp1" #Schleife über Dateisystem. $abc = foreach($file in (Get-ChildItem $src -Recurse -include *.txt,*.doc,*.ppt)){ #Dateiname im Ziel $dstfile = $file.FullName.replace("$src","$dst") #Ordner im Ziel $dstfolder = $dstfile.split('\')[0..($dstfile.split('\').length-2)] -join '\' #Testen ob diese Datei NICHT existiert if(!(test-path $dstfile)){ break #Testen ob ein Ordner existiert if(!(test-path $dstfolder)){ #Wenn er nicht existiert, dann an anlegen new-item $dstfolder -type directory -recurse }so #Wenn die Datei nicht existiert von der Quelle kopieren copy-item $file.FullName $dstfolder } } ::::: Also die Abfrage mit dem Error Message fehlt mir noch, sprich wenn eine Datei vorhanden ist soll er abbrechen. Muss ich ein Break oder ein Stop in die If Abfrage einbauen ? 2tens soll ich die Daten die Kopiert würden in einen String mit schreiben, sprich also den Pfad von wo die Datei herkam. Wie kann man dieses Problem Stellung lösen. Bitte um Hilfe Danke Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 20. März 2012 Melden Teilen Geschrieben 20. März 2012 @OT Arbeitgeber hin oder her, ein ernsthaftes Bemühen erkenne ich nicht im Ansatz. Mich stört es, Dukel & co reißt sich hier den A... auf und macht sich hier mehr Arbeit als du - Obwohl es dein Bier ist! Das nennt man auch Schmarotzen. @Topic Wenn du eine If-Else hast, was willst du dann mit dem Break ? Du kannst dir auch eine Switch aufbauen...und dort in den einzelnen Abschnitten mit nem Break rausspringen. (Google "Powershell Switch") Warum hast du ein Break an erster Stelle ? ... und wo das so ist, sollte wohl ein Else stehen^^ Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 20. März 2012 Autor Melden Teilen Geschrieben 20. März 2012 Sorry das mir das ganze Neu ist. Deswegen möchte ich ja das Sricpt fertig bekommen damit ich darauf aufbauen kann. Wenn ich mal eines Fertig ist sollte der Aha-effekt kommen. Nur ist es schwieig das innerhalb Kuzer Zeit zu lernen. Zu deinen Anschuldigungen das ich zu wenig Einsatz zeige kann ich nichts abgewinnen. Ich kann nicht verstehen wieso du dir dann die Mühe machst mich schlecht hin zustellen. Statt dessen hätten wir wahrscheinlich gemeinsam das Problem schon lange erledigt. Wenn du mir nicht helfen willst warum gehst du dann in THread rein ? Sorry das ich das Forum nutzen wollte um Informationen auszustauschen. Und wenn sich keiner Bereit fühlt mir zu helfen ja dann is auch kein Problem. Nur immer diese Belerungen intersieren mich nicht ? Weil diese nix bringen. Da merkt man wieder den Unterschied zur Linux Welt !!! Hier sind alle Freundlich und Hilfsbereit und keiner unterstellt dir was. Ganz ehrlich gesagt verstehe ich dich nicht "PowershellAdmin" du stellst dich hin als Guru und willst dein Wissen nicht teilen... okay aber dann bitte lass es das du zu meine Thread dazu schreibst. weil i freue mich jedesmal über eine Antwort und dann lese ich nur Belehrungsmassnahmen. Ganz Ehrlich gesagt hat mir die Antwort jetzt Minuten gekostet die nicht nötig wären aber naja.....und ich lieber in der Powershell verbringe Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 20. März 2012 Melden Teilen Geschrieben 20. März 2012 Sorry das mir das ganze Neu ist. Deswegen möchte ich ja das Sricpt fertig bekommen damit ich darauf aufbauen kann. Das ist doch kein Problem, du hast ihr umfassende Unterstützung und Hilfe erhalten, aber du erwartest fertige Lösungen. Zu deinen Anschuldigungen das ich zu wenig Einsatz zeige kann ich nichts abgewinnen. Ich kann nicht verstehen wieso du dir dann die Mühe machst mich schlecht hin zustellen. Statt dessen hätten wir wahrscheinlich gemeinsam das Problem schon lange erledigt. Wenn du mir nicht helfen willst warum gehst du dann in THread rein ? Sorry das ich das Forum nutzen wollte um Informationen auszustauschen. Und wenn sich keiner Bereit fühlt mir zu helfen ja dann is auch kein Problem. Nur immer diese Belerungen intersieren mich nicht ? Weil diese nix bringen. a) Habe ich dir geholfen b) Wenn du keine Hilfe -dazu gehört auch Kritik- willst, dann ruf nicht um Hilfe. Strukturiertes Arbeiten und Konzepte gehören in die IT wies Blut zum Schlachten. Basta. Da merkt man wieder den Unterschied zur Linux Welt !!! Hier sind alle Freundlich und Hilfsbereit und keiner unterstellt dir was. Ganz ehrlich gesagt verstehe ich dich nicht "PowershellAdmin" du stellst dich hin als Guru und willst dein Wissen nicht teilen... okay aber dann bitte lass es das du zu meine Thread dazu schreibst. Ganz Ehrlich gesagt hat mir die Antwort jetzt Minuten gekostet die nicht nötig wären aber naja.....und ich lieber in der Powershell verbringe Ich bin weder ein Guru, noch will ich nicht helfen - Du willst die Ganze Zeit fertige Lösungen und bist zu faul um Google zu nutzen - Das ist schon argh wenig Eigeninitiative. Wenn ich mir den Threadverlauf und deine dazugehörige Antwort durchlese, dann Frage ich mich wer hier NICHT "FREUNDLICH" und undankbar über die hier gezeigte "Hilfsbereitschaft" ist. Grüße Admin edit: Sry für den schroffen Ton, aber lieber direkt, als durch die Blume. Zitieren Link zu diesem Kommentar
schreckinger 10 Geschrieben 20. März 2012 Autor Melden Teilen Geschrieben 20. März 2012 Okay Also ich bedanke mich bei jeder Antwort ! Nur zur Info: Ich habe schon erzählt das mir das BuchPowershell in Action zu gelegt habe. Und googlen tue ich auch ständig Aber es ist meine erste Powershell Erfahrung ! Eine Fertig lösung , natürlich suche ich danach damit ich endlich das Sripct verstehe. An Hand dieses Scriptes gibt es sicher viel selbst erkenntnis. Vom Aufbau her, und wie man ein Sripct schreibt. Es gibt keine bessere Möglichkeiten als von Erfahrenen Powershell User zu lernen und das möchte ich machen. Vorallem weil es mein erstes Script ist wollte ich Hilfe von diesem Forum beziehen. Falls du denkst ich werde das mit weiteren Scripten machen denkst du leider Falsch. Ich muss es selbst können und vorallem schneller werden, daher wir oft einen Zeitdruck haben. Ich möchte nur auf diesem Fertigen Script dann aufbauen, daher sich meine ersten Paar Powershell aufgaben vorallem mit dem gleichen beschäftigen und mir dann das Script umschreiben kann. Vorallem wäre es Perfekt zum Lernen, deswegen auch meine ständigen Hilfe Schreie daher ich anstehe mit meinen Wissen. Vorallem ist sehr schwer richtige Beschreibungen zufinden die Dinge so erklären das man sie Versteht. Wie gesagt es ist meine erste Object Sprache. Ich hoffe wir haben das jetzt aus der Welt geschafft. Vielleicht findest du noch den Anstoß mir zu Helfen wäre auch bereit eine kleine Gegenleistung für deine Dienste zu geben. Danke nochmals Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 20. März 2012 Melden Teilen Geschrieben 20. März 2012 Jetzt mal wieder ruhig Blut! @Powershelladmin: wenn dir der Stil eines Users nicht gefällt, dann brauchst du den Thread ja nicht weiter zu lesen. Faulheit etc. werfen wir uns gegenseitig in diesem Forum jedenfalls nicht vor! :mad: @schreckinger: Warum verlangt dein Chef vor dir eine umfangreichere Skriptaufgabe in relativ kurzer Zeit zu Lösen, wenn dir das Werkzeug (Skriptingknowhow) noch gar nicht zur Verfügung steht? Errorhandling oder der MatchOperator sind in einem Forum nur schwer zu erklären. blub 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.