上一篇文章我们跟Planner做了简单的集成,今天我们集成Intune,演示一下如何支持Intune提供的设备和应用管理功能。
那么首先引出今天的第一个话题。
Microsoft Intune是一种基于云的企业移动管理(EMM)服务,可帮助员工提高工作效率,同时保护企业数据。通过Intune,我们可以:
更多信息可访问下面的链接查看:
https://docs.microsoft.com/zh-cn/intune/what-is-intune
说白了这个东西是应用于企业的,对于个人来说,如果没有机会在企业级别去应用,对它的功能有所了解,做简单的尝试就够了。另一个方面,对于企业来说,尤其是IT运维人员,这将是一个利器。
如果还没有Intune订阅,我们可以注册一个免费的30天试用。
https://docs.microsoft.com/zh-cn/intune/free-trial-sign-up
当然,假设你们已经有了Azure订阅,可以将试用添加到现有订阅,这样就不必再输入那些繁琐的信息了。注册完成之后请确保Intune订阅已经分配给该用户,默认好像是没有,需要到Office 365管理中心去分配一下。
访问下面的地址查看Intune的文档,了解其大致提供的功能。
https://docs.microsoft.com/zh-cn/intune/index
关于Intune在Microsoft Graph中目前支持的内容,访问以下地址:
https://docs.microsoft.com/zh-cn/graph/api/resources/intune-graph-overview?view=graph-rest-1.0
本篇的示例需要在Intune上至少注册一个设备,因此我们先来演示一下注册设备的操作。方便起见,我会将自己的Windows 10笔记本电脑注册成设备,Intune还支持常见的如Android、IOS等平台,更多信息可以访问下面的链接查看:
https://docs.microsoft.com/en-us/intune/device-enrollment
首先我们需要在终端进行设备注册。按下Win+I打开设置界面,选择帐户。
选择“从工作单位或学校访问”,然后滚动到下面的位置,选择“仅在设备管理中注册”。在尝试之后,发现这个操作能够将我们的设备注册到Intune的设备中,如果只是连接,会将我们的设备注册为Azure AD设备。
输入我们登录Intune的用户名和密码后,会显示下面的界面。
接下来访问地址
https://aka.ms/intuneportal
进入到Intune的管理界面,然后选择设备。就可以看到我们刚才注册的设备了。
接下来就是代码和配置方面的内容了。
如果要访问Intune,我们需要如下托管权限,向应用程序添加这些权限并进行管理员批准授权:
我们首先要做的就是列出一个用户注册的设备列表。我们可以通过向终结点
/users/
graphClient.Users[userPrincipalName].ManagedDevices.Request().GetAsync();
这将会返回请求用户的Intune设备列表。
Intune允许我们发布其他用户可以看见的网站链接,要想发布Web应用程序,我们只需要创建一个WebApp实体,向终结点/deviceAppManagement/mobileApps发起POST请求即可,SDK代码如下:
var webApp = new WebApp
{
AppUrl = url,
DisplayName = name,
Publisher = publisher
};
graphClient.DeviceAppManagement.MobileApps.Request().AddAsync(webApp)
为了演示方便,使用户可以看到应用,我们向所有用户指派该应用。通过向终结点/deviceAppManagement/mobileApps/
var assignment = new MobileAppAssignment
{
Intent = InstallIntent.Available,
Target = new AllLicensedUsersAssignmentTarget()
};
graphClient.DeviceAppManagement.MobileApps[app.Id].Assign(new[] { assignment }).Request().PostAsync();
通过Intune,我们可以使用deviceConfiguration实体去推送配置到管理的设备,比如设置Windows 10中的Edge主页并启用开发者模式。创建设备配置通过发送POST请求到终结点/deviceManagement/deviceConfigurations去完成操作,需要传递一个deviceConifgurationEntity实例。SDK代码如下:
var deviceConfiguration = new Windows10GeneralConfiguration
{
DisplayName = displayName,
EdgeHomepageUrls = new[] { edgeHomePage },
DeveloperUnlockSetting = StateManagementSetting.Allowed
};
return graphClient.DeviceManagement.DeviceConfigurations.Request().AddAsync(deviceConfiguration);
就像前面说到的应用那样,设备配置需要在应用之前进行指派。为了方便演示,我们将设备配置指派给Intune管理的所有设备。通过向终结点/deviceManagement/deviceConfigurations//assign发起POST请求来执行指派操作。注意在请求的body中我们必须提供至少一个deviceConfigurationAssignment实体。使用如下SDK代码即可完成操作:
var assignment = new DeviceConfigurationAssignment
{
Target = new AllDevicesAssignmentTarget()
};
graphClient.DeviceManagement.DeviceConfigurations[deviceConfiguration.Id].Assign(new[] { assignment }).Request().PostAsync();
主要的SDK代码操作介绍完了,本篇中除了修改Program.cs文件之外,我们还在Helpers文件夹中增加了一个IntuneHelper.cs类。每篇新增一个相应主题的帮助类已经已经成了一个惯例了。篇幅有限,完整代码可以访问下面的地址查看:
https://github.com/foxdave/MSGraphCN
如果你在自己尝试时也得到类似下图的内容,说明程序运行得很成功。
示例新增的应用可以通过客户端应用查看,如下图
设备配置可以通过设备配置 - 配置文件查看,如下图