Powershell 在.ps1文件中调用IIS相关cmdlet时内存增加

Powershell 在.ps1文件中调用IIS相关cmdlet时内存增加,powershell,iis,Powershell,Iis,在C#中,我有以下代码以文本方式运行脚本 在脚本中,我只是执行以下cmdlet Get-WebsiteState -Name "Default Web Site" 每次执行脚本时,我的记忆力都在不断提高。诚然,这最终将成为一个更大的脚本的一部分,该脚本不仅仅完成这一个功能,但似乎IIS命令的任何组合最终都会占用越来越多的内存。我试图: 直接在脚本中调用[System.GC]::Collect() 将Get WebsiteState-Name“Default Web Site”分配给一个变

在C#中,我有以下代码以文本方式运行脚本



在脚本中,我只是执行以下cmdlet

Get-WebsiteState -Name "Default Web Site"

每次执行脚本时,我的记忆力都在不断提高。诚然,这最终将成为一个更大的脚本的一部分,该脚本不仅仅完成这一个功能,但似乎IIS命令的任何组合最终都会占用越来越多的内存。我试图:

  • 直接在脚本中调用[System.GC]::Collect()
  • 将Get WebsiteState-Name“Default Web Site”分配给一个变量,然后 显式调用Remove变量并将其设置为$null
  • 我使用的IIS cmdlet的结果中没有“Dispose”方法

    值得注意的是,当我在我的机器上执行$PSVersionTable.PSVersion时,它返回4.0作为我的版本

    目标是能够使用计数器和各种元素向消费者显示站点信息

    我做错了什么?这是对IIS命令的滥用吗


    任何指导都将不胜感激。

    直接使用API就是答案。仍然不确定为什么我可以使用某些cmdlet而不能使用其他cmdlet,但对其进行了重新处理,使其工作得很好。

    如果您正在进行大量IIS操作,我建议您通过
    添加类型C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
    @Eris直接使用
    Microsoft.Web.Administration
    API,我将对此进行研究。我不会循环使用服务器或添加/删除网站,而是从它们的计数器/一些get cmdlet中阅读一些关于它们的基本信息。这仍然有助于减少开销吗?我希望如此,因为如果使用direct API,您不会产生新的powershell运行空间。
    Get-WebsiteState -Name "Default Web Site"