首页 > 解决方案 > 基本循环帮助 - Powershell

问题描述

在这里完成 Powershell Noobie。

我有一个.bat要转换为 Powershell 的文件。

基本上在运行时;它要求用户输入他们的 Active Directory 凭据。一经验证;dhcpmgmt.msc它以提升的域用户身份启动 RSAT 工具(例如:) 。

但是,如果凭据不正确 ( if %ERRORLEVEL% EQU 5);它执行 GOTO anecho "Incorrect username and password"然后循环请求用户再次输入他们的凭据。

当我使用:

do 
{
  Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Credential (Get-Credential "$env:USERDNSDOMAIN\")  -ArgumentList "C:\Windows\System32\dhcpmgmt.msc"
} until ($response -eq $null)

有用。但是如果我输入了错误的密码;窗口关闭。

我想要用户名/密码不正确的通知信息,然后重新引导他们再次输入他们的凭据。这将循环直到用户输入正确的凭据或简单地单击取消按钮。

非常感谢任何帮助/指导。提前致谢!

标签: powershell

解决方案


您可以在 while 循环中运行它以继续要求凭据,直到它们有效为止。

  • 获取凭据
  • 使用新的信誉运行 powershell
  • 如果失败,请要求新的凭据。如果没有,就跳出循环。
while ($true) 
{
  $userCreds = Get-Credential "$env:USERDNSDOMAIN\"
  try {
     Start-Process powershell -Credential $userCreds -ArgumentList "C:\Windows\System32\dhcpmgmt.msc" -ErrorAction Stop
     break
  }
  catch {
     Write-Output "Invalid Credentials"
     Write-Output "Enter new credentials?"
     if ((Read-Host) -ne "Yes") { break }

  }
}

推荐阅读