繁体   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