7

如果我有点来源:

. "\foo-bar.ps1"

如何查看获取所有点源脚本的列表以及如何从点源脚本中删除“foo-bar/ps1”?

4

3 回答 3

12

据我所知,您无法删除点源脚本。这就是 PowerShell 2.0 中引入模块的原因。请参阅About_Modules

您可以将“foo-bar.ps1”转换为模块。一个模块可以被导入(Import-Module)和移除(Remove-Module)。

于 2012-12-04T19:49:09.883 回答
5

我同意@JPBlanc 的观点,即您一般不能删除点源脚本但根据您自己的编码约定,您可能可以在实践中执行此操作。

首先是关于为什么你不能这样做的一些观察:

(1) PowerShell 没有将点源脚本作为单独实体的概念。一旦你点源它,它的内容就会成为你当前上下文的一部分,就像你在提示符下手动键入每一行一样。因此你不能删除它,因为它实际上并不存在:-)

(2) 出于与 (1) 相同的原因,您不能列出点源脚本。

现在,无论如何该怎么做:

但是,根据您的点源脚本的内容和约定,您也许可以做您想做的事情。例如,如果脚本只定义了三个函数——调用这些函数func-a、、func-bfunc-c——那么您可以同时列出删除这些函数。

列出同化函数:

Get-ChildItem function:func-*

删除同化函数:

Remove-Item function:func-*
于 2012-12-05T21:58:57.107 回答
5

如果您知道点源文件的路径,则可以删除源函数:

Get-ChildItem function: | 
Where-Object {$_.ScriptBlock.File -eq $path} | 
Remove-Item
于 2012-12-06T13:49:57.960 回答