powershell点源引入
产生背景
-
在介绍该知识点之前,我们先看以下场景:
-
此时我们有一个名为test.ps1的脚本文件,脚本内容如下:~~~powershellfunction get-diskinfo{[CmdletBinding()]param([string]$computerName=\’localhost\’,[string]$drive=\’C:\’)get-wmiobject -class win32_logicaldisk -filter "deviceID=\’$drive\’" -computername $computerName}~~~
-
在该脚本中,我们定义了一个名为 get-diskinfo 的函数。
-
现在我们的需求是:在powershell控制台运行该脚本文件,然后调用该函数:
-
由上图的执行结果我们可以看出,明明我们已经执行了.\\test.ps1脚本,但是当我们调用其中定义的函数时,报错却显示没有该函数,调用失败
-
而 点源引入 就是用来解决这个问题的
解决方法及原因
-
解决方法
解决步骤如下图:
- 通过上图我们发现,在执行脚本时,比第1张图片中的多了一个 “ . ” ,即变为了:. .\\test.ps1,而不再是:.\\test.ps1。
原因:
- 默认情况下,在我们使用powershell控制台执行完test.ps1脚本中的代码之后,系统会直接释放掉内存(即:test.ps1中的代码程序是不会一直驻留在内存中的)
而如果该代码一直驻留在内存中的话,会对我们的内存产生污染,那我们应该怎么删除由该脚本引入的函数呢?
- 方法就是:关闭当前的powershell控制台,从新打开一个即可,没有其他方法了。
参考:https://www.bilibili.com/video/BV1554y1Q76b