2017-02-24 6 views
2

Ich konnte das Skript löschen, sobald die Ausführung abgeschlossen ist.löschen Sie den Selbstordner, sobald die Ausführung abgeschlossen

function Delete() { 
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value 
    $Path = $Invocation.MyCommand.Path 
    Write-Host $Path 
    Remove-Item $Path 
      }  
Delete 

Aber ich bin nicht in der Lage, den gesamten Ordner und Unterordner von wo das Skript ausgeführt wird zu löschen. Gibt es eine Möglichkeit, um dies zu umgehen, die auf beiden powershell2.0 und 3.0 funktioniert?

+1

Unterordner löschen und so weiter werden Sie müssen den '-Recurse' Parameter' Remove-Item' hinzuzufügen. – gvee

+0

Sie können den Ordner, in dem sich das Skript befindet, möglicherweise nicht löschen, da die Skriptdatei zu diesem Zeitpunkt möglicherweise verwendet wird. Außerdem sollte Ihr aktueller Standort ('(Get-Location) .Path') nicht der Ordner sein, den Sie löschen möchten. –

+0

In meinen Experimenten können Sie sogar in PowerShell 2 eine Skriptdatei in der ersten Zeile löschen, und das Skript wird weiter verarbeitet. Es scheint, die ganze Sache in Erinnerung zu lesen und dann von dort zu laufen. Ich habe ein Skript, das darauf beruht, wie es in einem Netzwerk ist und auf bis zu 4 Arbeitsstationen ausgeführt werden kann, hält mich nicht auf, mit einer aktualisierten Version darüber zu speichern. –

Antwort

2

Wahrscheinlich müssen Sie die Parameter -recurse und -force verwenden. Außerdem müssen Sie den Skriptordner mit e aufrufen. G. Split-Path Cmdlets:

function Delete() { 
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value 
    $Path = $Invocation.MyCommand.Path 
    Write-Host $Path 
    Remove-Item (Split-Path $Path) -recurse -force 
      }  
Delete 
+0

Es hat funktioniert! Danke vielmals! – Karthi1234

Verwandte Themen