![](/img/trans.png)
[英]Can I make a function acessable that was dot-sourced within an imported-module to the parent script?
[英]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-a
, func-b
和func-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.