如何通过 运行 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
,然后将其转换为常规字符串以进行比较。可能有一种我不知道的比较安全字符串的方法。
我有两个文件,一个是名为 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
,然后将其转换为常规字符串以进行比较。可能有一种我不知道的比较安全字符串的方法。