У меня есть два файла: один - это командный файл с именем validator.bat , а другой - сценарий PowerShell checker.ps1

< sizesvalidator.bat

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

Передаче переменной должно быть присвоено значение с помощью сценария PowerShell.

< sizeschecker.ps1

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

Я хочу назначить строку вывода "matched" / "Different" переменной pass в файле bat, но с использованием только сценария PowerShell или его кода. Я много искал в Google и Youtube, но не смог найти решения своей проблемы. Помогите мне, пожалуйста.

0
Sarthak Gupta 5 Окт 2020 в 23:34

1 ответ

Лучший ответ

Validator.bat

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

Checker.ps1

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

Обратите внимание: это не замаскирует пароль при его вводе. Вам нужно будет использовать -AsSecureString на хосте чтения, а затем преобразовать его в обычную строку для сравнения. Может быть способ сравнения защищенных строк, о котором я не знаю.

2
Doug Maurer 5 Окт 2020 в 22:28