none
IF exist 4 Files, dann löschen! Einzeiler? RRS feed

  • Frage

  • Hallo Zusammen,

    gibt es eine Möglichkeit zu prüfen ob 4 bestimmte Files exestieren und dann diese zu löschen?
    Ohne lange If Anweisungen zu schreiben?

    $strPathUser\$usrPathName.pst
    $strPathUser\$usrPathName.xml
    $strPathUser\$usrPathName_Forwarder.txt
    $strPathUser\$usrPathName + $usr_obj.employeeID + ".jpg"

    Diese vier Dinge sollten auf Existenz geprüft werden und wenn vorhanden gelöscht werden. Existiert ein File nicht, soll nix gelöscht werden und eine Mail generiert werden. (Code für Mail habe ich. =)) Kann mann das kurz und knapp in einem Einzeiler verfassen? Wenn ja wie?

    VG
    Thomas

    Mittwoch, 25. Juli 2012 08:38

Antworten

  • Da musst du mir erstmal den Sinn erklären! Ist das ein Sport ?
    Du kannst ja mit Test-Path True und False werte erzeugen!

    'C:\Temp\test.txt', 'C:\Temp\test-1.txt','C:\Temp\test-2.txt'|%{$Array=@()} {$Array+=Test-Path $_} {If($Array -contains $False){"Mindestens ein File Fehlt!"}ELSE{"Alle Files Da!"}}



    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    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' '

    • Als Antwort markiert Digiflex Mittwoch, 25. Juli 2012 14:14
    Mittwoch, 25. Juli 2012 09:36

Alle Antworten

  • Da musst du mir erstmal den Sinn erklären! Ist das ein Sport ?
    Du kannst ja mit Test-Path True und False werte erzeugen!

    'C:\Temp\test.txt', 'C:\Temp\test-1.txt','C:\Temp\test-2.txt'|%{$Array=@()} {$Array+=Test-Path $_} {If($Array -contains $False){"Mindestens ein File Fehlt!"}ELSE{"Alle Files Da!"}}



    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    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' '

    • Als Antwort markiert Digiflex Mittwoch, 25. Juli 2012 14:14
    Mittwoch, 25. Juli 2012 09:36
  • Hallo Peter, die Frage ist natürlich berechtigt..es ist natürlich kein Sport! ^^

    ich möchte einfach nur den Script für dieses Thema klein halten um die Gesamtheit des Scripts übersichtlicher zu lassen. :)

    Ich werde es mal versuchen. Besten Dank erst mal!

    Mittwoch, 25. Juli 2012 12:42
  • Was ist mit übersichtlich gemeint?
    Ein Einzeiler ist meist schwerer zu lesen als ordentlich geschriebenen Zeilen!
    Ansonnsten kann ich dir da noch ein einzelnes If anbieten das ebenfalls mit Booleschen operationen Arbeitet:

    IF ((Test-Path 'C:\Temp\test.txt') -and (Test-Path 'C:\Temp\test-1.txt') -and (Test-Path 'C:\Temp\test-2.txt')) {
      "Alle DA!"  
    }
    ELSE {
        "Nicht alle Da!"
    }

      Logische Operatoren
          Mit logischen Operatoren (-and, -or, -xor, -not, !) verbinden
          Sie bedingte Anweisungen zu einer einzelnen komplexen Bedingung.
          Beispielsweise können Sie den logischen -and-Operator zum Erstellen
          eines Objektfilters mit zwei unterschiedlichen Bedingungen verwenden.

    Siehe auch:
    Get-Help about_Logical_Operators


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    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' '

    Mittwoch, 25. Juli 2012 13:24
  • Funktioniert perfekt! Danke! :)

    Na diese Zeile dient nur als PlausiCheck mehr nicht. Aber du hast recht deine zweite Version ist besser!Bzw. übersichtlicher.
    Nun habe ich folgendes Problem:

    Ich erstelle zur Archivierung eines User, die Mailbox als .pst

    New-MailboxExportRequest -Mailbox $i.Name -FilePath $user_mbxFile

    Dann frage ich mit deinem Script ab ob die Datei geschrieben wurde. Wenn ja soll er die Mailbox removen.
    Leider wartet der Script nicht bis der Export fertig ist, sondern fährt direkt fort mit dem Script. Wie kann ich im Script warten bis der Mailbox-Export erfolgreich erstellt ist?

    Gruß
    Thomas


    • Bearbeitet Digiflex Mittwoch, 25. Juli 2012 14:24
    Mittwoch, 25. Juli 2012 14:14
  • Okay habe was gefunden ich frage einfach in einer schleife immer wieder ab bis

    Get-MailboxExportRequest TestUser |fl status

    "complete" steht.

    Andere Vorschläge natürlich gern erwünscht. Soweit ich weiß kann man leider nicht dem Command sagen wenn complete dann gehe im script weiter.

    Gruß
    Thomas

    Mittwoch, 25. Juli 2012 15:46
  • Internet suche: New-MailboxExportRequest wait

    http://www.stevieg.org/tag/new-mailboxexportrequest/

    New-MailboxExportRequest scheint einen eigenen Prozess zu starten du musst dann also sehen ob der Prozess fertig ist (Get-Prozess und Start-Sleep 50  in einer schleife)

    http://community.spiceworks.com/topic/131451-error-handling-with-get-mailboxexportrequest

    Manage MailboxExportRequest

    http://technet.microsoft.com/en-us/library/ee633479


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    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' '

    Mittwoch, 25. Juli 2012 15:54