簡體   English   中英

如何在PowerShell中刪除點源腳本?

[英]How can I remove a dot sourced script in PowerShell?

如果我有點源:

. "\foo-bar.ps1"

如何查看獲取所有點源腳本的列表以及如何從點源腳本中刪除“foo-bar / ps1”?

據我所知,您無法刪除點源腳本。 這就是PowerShell 2.0中引入的模塊的原因。 請參閱About_Modules

您可以將“foo-bar.ps1”轉換為模塊。 可以導入模塊(Import-Module)並刪除(Remove-Module)。

我同意@JPBlanc一般不能刪除點源腳本但根據您自己的編碼約定,您可以在實踐中執行此操作

首先是幾個關於為什么你不能這樣做的觀察:

(1)PowerShell沒有將點源腳本作為單獨的實體的概念。 一旦你點源它,它的內容就成了你當前上下文的一部分,就像你在提示符下手動輸入每一行一樣。 因此,你無法刪除它,因為它實際上並不存在:-)

(2)由於與(1)相同的原因,您無法列出點源腳本。

現在,無論如何都要這樣做:

但是,根據點源腳本的內容和約定,您可以執行所需的操作。 例如,如果腳本只是定義了三個函數 - 調用這些func-afunc-bfunc-c那么你可以 列出刪除這些函數。

列出同化功能:

Get-ChildItem function:func-*

刪除同化功能:

Remove-Item function:func-*

如果您知道點源文件的路徑,則可以刪除源函數:

Get-ChildItem function: | 
Where-Object {$_.ScriptBlock.File -eq $path} | 
Remove-Item

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM