如何通过 运行 powershell 脚本为批处理文件中的变量赋值?

How to assign value to a variable in Batch file by running powershell script for it?

我有两个文件,一个是名为 validator.bat 的批处理文件,另一个是 powershell 脚本 checker.ps1

validator.bat

    @echo OFF
    set/p "pass=>"
    echo %pass%

变量 pass 将使用 powerhell 脚本赋值。

检查器。ps1

    $pwd1 = Read-Host "Enter your passowrd: "
    $pwd2 = 'password'
    if ($pwd1 -ceq $pwd2) {
    Write-Host "matched"
    } else {
    Write-Host "differ"
    }

我想将输出字符串 "matched"/"differ" 分配给 bat 文件中的 pass 变量,但仅使用 powershell 脚本或其代码。 我在 Google 和 Youtube 上搜索了很多,但找不到问题的解决方案。 请帮助我。

validator.bat

@echo OFF
for /f %%a in ('powershell -file checker.ps1') do set "pass=%%~a"
echo %pass%

检查器。ps1

$pwd1 = Read-Host "Enter your password: "
$pwd2 = 'password'
if ($pwd1 -ceq $pwd2) {
    Write-Host "matched"
} else {
    Write-Host "differ"
}

请注意,这不会在输入时屏蔽密码。您需要在 read-host 上使用 -AsSecureString,然后将其转换为常规字符串以进行比较。可能有一种我不知道的比较安全字符串的方法。