powershell点源引入

powershell点源引入

产生背景

  • 在介绍该知识点之前,我们先看以下场景:

  • 此时我们有一个名为test.ps1的脚本文件,脚本内容如下:

    function get-diskinfo{
        [CmdletBinding()]
        param(
            [string]$computerName='localhost',
            [string]$drive='C:'
        )
        get-wmiobject -class win32_logicaldisk -filter "deviceID='$drive'" -computername $computerName
    }
    
  • 在该脚本中,我们定义了一个名为 get-diskinfo 的函数。

  • 现在我们的需求是:在powershell控制台运行该脚本文件,然后调用该函数:
    01_场景描述

  • 由上图的执行结果我们可以看出,明明我们已经执行了.\test.ps1脚本,但是当我们调用其中定义的函数时,报错却显示没有该函数,调用失败

  • 点源引入 就是用来解决这个问题的

解决方法及原因

  • 解决方法

    • 解决步骤如下图:
    • 通过上图我们发现,在执行脚本时,比第1张图片中的多了一个 “ . ” ,即变为了:. .\test.ps1,而不再是:.\test.ps1
      02_解决步骤
  • 原因:

    • 默认情况下,在我们使用powershell控制台执行完test.ps1脚本中的代码之后,系统会直接释放掉内存(即:test.ps1中的代码程序是不会一直驻留在内存中的)
    • 所以当我们再次调用脚本中定义的函数的时候,就会出现调用失败的情况(函数找不到)
    • 而使用了 “点源引入” 之后,powershell控制台执行完脚本代码之后,其所占用的内存并不会被立刻释放掉,而是会驻留在内存中
    • 所以我们可以再次进行函数调用了。
  • 而如果该代码一直驻留在内存中的话,会对我们的内存产生污染,那我们应该怎么删除由该脚本引入的函数呢?

    • 方法就是:关闭当前的powershell控制台,从新打开一个即可,没有其他方法了。

参考:https://www.bilibili.com/video/BV1554y1Q76b

posted @   浅易深  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示