我有一个 CMD 文件,我必须从中运行传递用户名和密码的 Powershell 脚本:即:PowerShell -文件“%1”-计算机“%2”-用户名“%3”-密码“%4”。是否有从 CMD 向 powershell 脚本发送 SecureString 密码的方法?
让我再补充几点,让我的困境更清楚:所以每当我执行这个包含上述 Powershell 命令的 CMD 文件时,我都会在命令行上传递所有参数的值(%1% 到 %4%) . 现在,当我传递这些参数时,它们以明文形式传递,并且所有内容都以 ID 4688 并启用了高级审计记录到事件监视器中。我想要的是在这种情况下不可见的密码。
不,SecureString 是一个 Powershell 结构,在旧版 cmd/batch 环境中没有任何意义。
如果您不希望密码可见,则需要找到另一种传递密码的方式,而不是直接在命令中传递(这可能意味着修改您的 Powershell 脚本以不接受纯文本密码参数)。
我见过人们做的最常见的事情是将
PSCredential
对象导出到文件中Export-CliXml
,然后在调用脚本函数(通过Import-CliXml
)之前将其导入到变量中,然后将变量传递给函数。这种方法的警告是导出的文件不可移植。XML 中的加密与执行导出的用户和机器相关。编辑:这是您可以更改 CMD 脚本以适应传递 PSCredential 的方法。我会在这里假设相对路径只是为了让事情更短。
在您的脚本开始之前,您需要将凭证导出到文件中。
现在在您的 CMD 脚本中,您基本上将调用 Powershell 的方式从使用更改
-File
为使用-Command
,以便您可以在将凭证文件传递给脚本之前将其导入回变量。