在运行时将文本临时存储在 powershell 变量中时,在不再需要时从内存中删除变量内容的最有效方法是什么?
我已经使用了两者Clear-Item variable:
,Remove-Variable
但是使用后者从内存中删除某些内容与使用前者将内存内容清零的速度有多快?
编辑:我应该更清楚地说明我为什么要问。
我正在为一堆应用程序虚拟机自动 RDP 登录(应用程序不作为服务运行,外包开发人员,长篇大论)。
因此,我正在开发(基本完成)一个脚本,用于将启动会话分组到每个 VM。
想法是存储凭据的脚本函数read-host
用于提示输入主机名,然后get-credentials
获取域/用户/密码。
然后使用 256 位密钥(存储凭据并运行组启动的机器/用户独有的运行时密钥)从安全字符串转换通行证。
VM 名称、域、用户和加密通行证存储在一个文件中。启动会话时,读取详细信息,解密密码,传递详细信息cmdkey.exe
以存储\generic:TERMSRV
该 VM 的凭据,清除纯文本传递变量,将 mstsc 启动到该主机,几秒钟后从 Windows 凭据存储中删除凭据。(如果我将密码以非明文形式传递给 cmdkey.exe,则 RDP 会话将收到不正确的凭据或没有凭据)。
所以,因此问题是,我需要明文密码尽可能短地存在于内存中。
为了让安全人员满意,脚本本身是 aes256 加密的,并且带有自己的 ps 主机的 ac# 包装器读取、解密和运行脚本,因此运行它的机器上没有明文源。(文件共享上的加密源非常有效,我有一个终止开关,可以简单地用另一个显示该应用已被禁用的消息替换加密脚本)