2017-02-24 81 views
2

執行完成後,我可以刪除腳本。執行完成後刪除自身文件夾

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

但我無法刪除腳本運行的整個文件夾和子文件夾。有什麼辦法可以解決這個問題,它可以在powershell2.0和3.0上運行?

+1

要刪除子文件夾和諸如此類的東西,你需要到'-Recurse'參數添加到'刪除,Item'。 – gvee

+0

您可能無法刪除腳本所在的文件夾,因爲腳本文件可能正在使用中。另外,你當前的位置('(Get-Location).Path')不應該是你想要刪除的文件夾。 –

+0

在我的實驗中,即使在PowerShell 2上,您也可以在第一行刪除腳本文件,並繼續處理腳本。它似乎將整個事物讀入記憶中,然後從那裏運行。 我有一個腳本依賴於它,因爲它在網絡上,可以在最多4個工作站上運行,不會阻止我通過更新的版本保存腳本。 –

回答

2

您可能必須使用-recurse-force參數。你也必須使用e來獲取腳本文件夾。 G。 Split-Path的cmdlet:

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

它的工作!非常感謝! – Karthi1234

相關問題