Azure Runbook中PowerShell获取用户输入报错,如何解决?是否支持交互?
解决Azure AD应用注册脚本中Read-Host报错的问题
问题原因
你使用Read-Host获取用户输入时触发报错,是因为运行脚本的环境(比如Azure Automation Runbook)属于非交互式环境,这类环境不支持需要用户手动交互的命令,必须让脚本完全自动化执行,不能依赖实时输入。
替代解决方案
1. 将重定向URL作为脚本参数传入
把重定向URL设为脚本的必填参数,调用脚本时直接指定值:
param( [Parameter(Mandatory=$true)] [string]$RedirectUri ) # 示例:使用Microsoft Graph PowerShell更新应用的重定向URL Update-MgApplication -ApplicationId "你的应用注册ID" -Web @{RedirectUris = @( $RedirectUri )}
调用脚本时执行:
.\Update-AADAppRedirectUri.ps1 -RedirectUri "https://your-domain.com/callback"
2. 在Azure Automation Runbook中使用内置输入参数
如果是在Azure自动化Runbook中运行:
- 登录Azure门户,找到目标Runbook,进入参数设置页,添加名为
RedirectUri的字符串类型参数(可勾选“必填”) - 脚本中直接使用该参数即可:
# 直接使用Runbook定义的输入参数更新应用 Update-MgApplication -ApplicationId "你的应用注册ID" -Web @{RedirectUris = @( $RedirectUri )}
执行Runbook时,在触发界面输入对应的重定向URL即可。
3. 从配置文件读取重定向URL
将重定向URL写入配置文件(比如JSON),脚本读取该文件获取值:
创建app-config.json文件:
{ "RedirectUri": "https://your-domain.com/callback", "ApplicationId": "你的应用注册ID" }
脚本中读取配置:
$config = Get-Content "app-config.json" -Raw | ConvertFrom-Json Update-MgApplication -ApplicationId $config.ApplicationId -Web @{RedirectUris = @( $config.RedirectUri )}
内容的提问来源于stack exchange,提问作者Rishikesh Sonawane
相关产品推荐
相关产品推荐

