Jump to content

Skript funktioniert in der ISE, aber nicht beim Aufruf via PowerShell Konsole


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi,

 

ich hab nen kleines Skript gebastelt, welches Log Files die älter als 7  Tage sind löschen soll.

In der PS ISE funktioniert es auch wunderbar, wenn ich es jedoch als ps1-Datei speichere und via PS Konsole aufrufen will, passiert nichts.

Er wirft mir nirgends eine Fehlermeldung, wenn ich es über die Konsole in der IDE ausführen klappt es wunderbar.

 

ExecutionPolicy ist bei mir auf Unrestricted 

Als Admin in der Konsole hatte ich es auch versucht, außerdem hab ich versucht das Teil von C:\ aufzurufen und vom Ordner in dem es liegt selbst.

Im Skript selbst sind auch nur komplette Pfade angegeben.

 

Ich vermute mal es muss irgendwas im Skript nicht passen, da vorherige Projekte wunderbar aufrufbar waren.

 

Hier mein Code

$ToLogDataPath = @(
"C:\temp\*.txt"
"C:\temp2\*.txt"
"C:\temp4\*.txt"
)

$TimeRange = -7

$LogFiles = @()


function GetLogs
{

    for ($i = 0; $i -lt ($global:ToLogDataPath).Count; $i++)
    {
        $global:LogFiles += get-childitem -Path $global:ToLogDataPath[$i] recurse | where-object{$_.lastwritetime -lt (get-date).addDays($global:TimeRange)}  
    }
}
   
function DelLogs
{

    if (($global:LogFiles).Count -ge 0)
    {
        echo("Dateien älter als " + ($global:TimeRange * -1) + " Tage:") >> ("C:\Users\" + $env:USERNAME + "\Desktop\" + (get-date).ToString('dd-MM-yyyy') + "DelOldLogs.log")

        for ($j = 0; $j -lt ($global:LogFiles).Count; $j++)
            {
            echo $global:LogFiles[$j].FullName >> ("C:\Users\" + $env:USERNAME + "\Desktop\" + (get-date).ToString('dd-MM-yyyy') + "DelOldLogs.log")
            Remove-Item $global:LogFiles[$j].FullName
            }
    }
    else 
    {
        echo("Es konnten keine Dateien älter als " + ($global:TimeRange * -1) + " Tage gefunden werden") >> ("C:\Users\" + $env:USERNAME + "\Desktop\" + (get-date).ToString('dd-MM-yyyy') + "DelOldLogs.log") 
    }
    $global:LogFiles = $null
}
GetLogs
DelLogs

 

Falls es Verbesserungsvorschläge gibt, immer raus damit :)

 

Danke für die Hilfe schonmal.

Gruß Tim

Link zu diesem Kommentar
vor 49 Minuten schrieb Saiinox:

In der PS ISE funktioniert es auch wunderbar, wenn ich es jedoch als ps1-Datei speichere und via PS Konsole aufrufen will, passiert nichts.

 

Das liegt meistens an Variablen, die Du in der ISE gesetzt hast oder die noch vom vorherigen Ausführen des Codes übriggeblieben sind, aber in einer neu gestarteten Konsole eben nicht vorhanden sind.

 

 

vor 49 Minuten schrieb Saiinox:
$ToLogDataPath = @(
"C:\temp\*.txt"
"C:\temp2\*.txt"
"C:\temp4\*.txt"
)

 

Diese Pfade würde ich eher zu "C:\temp*\*" verkürzen und beim Get-ChildItem den -Filter auf  "*.txt" spezifizieren.

 

vor 49 Minuten schrieb Saiinox:
for ($i = 0; $i -lt ($global:ToLogDataPath).Count; $i++)

 

Über die Elemente eines gegebenen Arrays kann man mit "foreach ($Element in $ElementListe){ ... code}" iterieren. 

 

Im einfachsten Fall sollte das hier als Anfang genügen:

$SevenDaysBefore = (Get-Date).Date.addDays(-7)
$OldFileList = 
Get-ChildItem -Path 'C:\temp*\' -Filter '*.txt' -File -Recurse |
    Where-Object {
        $_.LastWriteTime -lt $SevenDaysBefore
    }

$OldFileList | Remove-Item

 

bearbeitet von BOfH_666
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...