【发布时间】:2022-10-17 05:59:23
【问题描述】:
我现在正在编写一个脚本,但我无法弄清楚为什么在使用 ISEsteroids 编译到 CMD/window (.*Exe) 时,添加到脚本中会使我的 -AsSecureString 在完成的结果中回显。
我正在使用Read-Host 在上面使用并隐藏脚本中编写的密码。在编辑器中运行代码时效果很好。但是,当使用 ISEsteroids 编译以执行我的脚本时,我的脚本运行,然后最后以纯文本形式回显密码 3 次......就像这样(图片)
我使用它在两者之间添加“再次运行”框和脚本。
$choices = [System.Management.Automation.Host.ChoiceDescription[]] @("&Yes","&No")
while ( $true ) {
脚本在这里:
$Host.UI.RawUI.WindowTitle = $PSScriptRoot
$choice = $Host.UI.PromptForChoice("Run again","",$choices,0)
if ( $choice -ne 0 ) {
break
}
}
ISE 输出:
可执行文件的输出:
更新 - 已解决从@mklement0 获得帮助!这解决了这个问题。
while ([Console]::KeyAvailable) { $null = [Console]::ReadKey($true) }
【问题讨论】:
-
但是,在我的帖子中为“是/否”问题添加该代码时,它仅以纯文本形式显示密码。而且,正如仅在编译为可执行文件时所说的那样,而不是在 Powershell 编辑器中运行相同的确切代码时。 :/
-
是的,当以任何一种方式运行脚本时,它都会显示 ****,但用户名和密码都写在脚本末尾的图片中,同时作为已编译的可执行文件运行。用户名:test 密码:test
-
$test2=Read-Host "Password" -AsSecureString 但是一旦我将变量传递给 Start-process 和我的测试环境中的计算机列表,它就运行良好。然后在脚本输出的最后显示“再次运行?” Y/N:用户名密码“再次运行?” Y/N:用户名密码仅在作为可执行文件时发生。而不是在 PS1 或编辑器中
-
太棒了!非常感谢你不知道这实际上是在幕后发生的。
-
很高兴听到。我在这里清理了我的 cmets,并在答案中总结了解决方案以及背景信息。