如何用PowerShell/CMD自动化向SetPassword.exe传入两次密码
自动化命令行程序的密码重复输入验证流程
PowerShell 方案
方法1:管道传递标准输入
如果目标程序SetPassword.exe支持读取标准输入,这是最简单的实现方式:
- 先生成随机密码,再将密码(两次,用换行分隔)通过管道传给程序:
# 生成12位包含大小写字母和数字的随机密码,可调整Count值改变长度 $randomPassword = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 12 | ForEach-Object {[char]$_}) # 传递两次密码给程序 "$randomPassword`n$randomPassword" | .\SetPassword.exe
方法2:使用.NET Process类(兼容更多程序)
部分程序可能不接受管道输入,而是直接读取控制台缓冲区,这时用.NET的Process类更可靠:
# 生成随机密码 $randomPassword = -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 12 | ForEach-Object {[char]$_}) # 配置进程启动参数 $processStartInfo = [System.Diagnostics.ProcessStartInfo]@{ FileName = ".\SetPassword.exe" RedirectStandardInput = $true UseShellExecute = $false CreateNoWindow = $true } # 启动进程并输入密码 $process = [System.Diagnostics.Process]::Start($processStartInfo) $process.StandardInput.WriteLine($randomPassword) $process.StandardInput.WriteLine($randomPassword) $process.StandardInput.Close() $process.WaitForExit()
CMD 方案
方法1:Echo 管道输入
适用于支持标准输入的程序:
@echo off :: 生成简单随机密码,可替换为更复杂的生成逻辑 set "randomPassword=ABC123xyz789" :: 连续输出两次密码,通过管道传递给程序 (echo %randomPassword% & echo %randomPassword%) | SetPassword.exe
方法2:VBScript 辅助(兼容更多场景)
如果CMD管道无效,用VBScript模拟控制台输入:
- 创建
SetPasswordAuto.vbs脚本:
Set objShell = CreateObject("WScript.Shell") ' 生成12位随机密码 randomPassword = GenerateRandomPassword(12) ' 启动程序并输入两次密码 Set objExec = objShell.Exec("SetPassword.exe") objExec.StdIn.WriteLine(randomPassword) objExec.StdIn.WriteLine(randomPassword) objExec.StdIn.Close() ' 随机密码生成函数 Function GenerateRandomPassword(length) Dim chars, i, randNum chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" Randomize GenerateRandomPassword = "" For i = 1 To length randNum = Int((Len(chars) * Rnd) + 1) GenerateRandomPassword = GenerateRandomPassword & Mid(chars, randNum, 1) Next End Function
- 在CMD中执行:
cscript //nologo SetPasswordAuto.vbs
注意事项
- 优先使用标准输入传递的方式(管道/Process类),比模拟键盘输入(如SendKeys)更稳定可靠
- 如果目标程序使用密码掩码(输入时不显示字符),只要它是读取标准输入,上述方法依然有效
- 随机密码生成逻辑可根据需求调整,比如添加特殊字符、调整长度等
内容的提问来源于stack exchange,提问作者Zac
相关产品推荐
相关产品推荐

