Import-Skript

  • Hi,


    ich hab es nun so gelöst. Einziges Problem war eben, dass die genannten Anweisungen mit dem * nichts anfangen konnten.


    Deshalb hab ich nen kleinen Umweg gemacht.
    <code>
    Move-Item "D:\\Microsoft\\Exchange Server\\V14\\Logging\\MigrationLogs\\*.xml" -Destination "D:\\PST-Import\\PST-Files\\$i.xml"
    Get-ChildItem D:\\PST-Import\\PST-Files\\ *.pst.xml | Rename-Item -NewName { $_.name -replace '\\.pst.xml','.xml' }
    </code>
    die Move-Item Anweisung alleine macht aus der Logdatei nämlich eine "Migration.pst.xml". Deshalb noch die zusätzliche Rename Anweisung die dann die Dateiendung umbenennt.


    Coole Sache.


    Danke für die großartige Hilfe RobertW. Ich hab nun richtig Spaß an der PowerShell bekommen.


    Grüße Tray

  • Hi,


    vielleicht doch noch eine Sache bevor ich das Thema schließe.


    Ich rufe in dem Skript ja eine Batch Datei auf
    <code>
    Invoke-Expression -Command "D:\PST-Import\Start-MMImport.bat -$i"
    </code>
    Die Batch-Datei gibt dann den Inhalt der Variablen an das Java-Programm.
    <code>
    @echo OFF
    "C:\\Program Files (x86)\\Java\\jdk1.5.0_14\\bin\\java.exe" -jar D:\\PST-Import\\Dialog.jar %1
    </code>
    Das musste ich so machen, da das Skript den java.exe Prozess nicht erkannt hat und weitergelaufen ist.
    Der Prozess wird so anhalten:
    <code>
    $p = Get-Process java.exe # Hier steht der Prozessname
    if ($p)
    {
    $p.WaitForExit()
    Write-Host "| Der Mail-Import wurde beendet! |" -ForegroundColor Yellow
    }
    else
    {
    Write-Host "| Der Mail-Import wurde nicht gestartet |" -ForegroundColor Yellow
    }
    </code>
    Hinter dem Prozess-namen im Task-Manager steht noch ein *32. Gebe ich das zusätzlich an, geschieht auch nix. Was kann ich hier noch tun?


    Grüßle

    • Offizieller Beitrag
    Zitat


    Danke für die großartige Hilfe RobertW. Ich hab nun richtig Spaß an der PowerShell bekommen.


    Ich mache kommende Woche bei einem kleinen Schulungsanbieter mal wieder einen PowerShell Workshop - auf die freue ich mich immer besonders.


    Das *32 weglassen, das sagt nur aus, dass es sich um einen 32-Bit-Prozess handelt.

  • Hi,


    du weist nicht zufällig noch, wie ich eine Zeichenkette verändern kann? Ich habe es mit -replace versucht, aber irgendwie klappt es nicht so ganz.


    <code>
    $slash = "\\"
    $match = "\\$"
    $slash -replace $match,"/"
    </code>


    Es geht darum, dass das Javaprogramm mit den regulären Dateipfaden "D:\PST-Import\" nix anfangen kann. Das muss so übergeben werden "D:/PST-Import/"

    • Offizieller Beitrag

    Moin,


    sehe ich richtig, Du willst die Backslashes gegen normale Slashes ersetzen?


    Das geht so:


    Code
    $datei -replace "\\\\\","/"


    (Also in den ersten " müssen 2x Backslash, in den zweiten " einmal ein normaler Slash - leider schmeisst die Foren-Software immer einen der beiden ersten Backslashes raus.)