如何在PowerShell中删除点源脚本?

时间:2012-12-04 19:30:19

标签: .net powershell

如果我有点源:

. "\foo-bar.ps1"

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

3 个答案:

答案 0 :(得分:11)

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

您可以将“foo-bar.ps1”转换为模块。可以导入模块(Import-Module)并删除(Remove-Module)。

答案 1 :(得分:5)

我同意@JPBlanc,你不能删除一般来源的 ,但根据你自己的编码惯例,你可以在实践中

首先关于为什么你不能这样做

的几个观察

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

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

现在,无论如何都要这样做:

根据点源脚本的内容和惯例,您可以按照自己的意愿行事。例如,如果脚本只定义了三个函数 - 调用这些函数func-afunc-bfunc-c - 那么您可以两个列表删除这些功能。

列表同化功能:

Get-ChildItem function:func-*

删除同化函数:

Remove-Item function:func-*

答案 2 :(得分:3)

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

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