Azure云Shell中New-AzureADPolicy缺失及安装AzureADPreview报错咨询
关于Web版Azure云Shell操作Azure AD的解决方案
首先明确回答:完全可以通过Web版Azure云Shell操作Azure AD,但需要避开你遇到的Windows专属模块坑,改用微软推荐的跨平台工具。
先拆解你遇到的两个问题根源:
New-AzureADPolicy不被识别:默认Azure云Shell没有预装传统的AzureAD模块,而且这个模块已经被微软标记为弃用状态了。- 安装
AzureADPreview报错:这个模块是Windows平台专属的,依赖Windows系统的DLL文件(比如你看到的api-ms-win-core-sysinfo-l1-1-0.dll),而Web版Azure云Shell默认运行的是Linux环境,自然找不到这些依赖,所以安装失败。
正确的操作方案:改用Microsoft Graph PowerShell模块
微软现在推荐用Microsoft Graph PowerShell替代所有旧的AzureAD模块,它完全支持跨平台(包括Linux版云Shell),功能覆盖所有Azure AD管理场景,包括策略创建。
具体操作步骤:
- 第一步:在Web版云Shell中切换到PowerShell环境(默认可能是Bash,点击云Shell窗口左上角的下拉菜单选择PowerShell)
- 第二步:安装Microsoft Graph模块(如果没预装的话):
Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force - 第三步:连接到Microsoft Graph,根据你要执行的操作申请对应权限(比如创建策略需要
Policy.ReadWrite.ConditionalAccess等权限):Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess", "Policy.Read.All" - 第四步:替代
New-AzureADPolicy的操作:
比如你原来要创建条件访问策略,对应的Graph命令是New-MgIdentityConditionalAccessPolicy,可以用类似这样的命令:$params = @{ DisplayName = "Block Legacy Authentication" State = "enabled" Conditions = @{ ClientAppTypes = @( "exchangeActiveSync" "other" ) Users = @{ IncludeUsers = @( "all" ) } } GrantControls = @{ Operator = "OR" BuiltInControls = @( "block" ) } } New-MgIdentityConditionalAccessPolicy -BodyParameter $params
额外提示
- 可以用
Get-Command -Module Microsoft.Graph.Identity.SignIns查看所有和策略相关的Graph命令,找到和你原来AzureAD操作对应的替代项。 - 所有旧的AzureAD cmdlet都有对应的Graph替代命令,你可以直接在云Shell里用
Find-MgGraphCommand命令查询对应关系,比如:Find-MgGraphCommand -Command New-AzureADPolicy
内容的提问来源于stack exchange,提问作者Maxim Salamatko
相关产品推荐
相关产品推荐

