[玩转系统] 使用 GitHub Copilot 将 PowerShell 脚本升级到 Microsoft Graph PowerShell SDK
作者:精品下载站 日期:2024-12-14 04:12:07 浏览:15 分类:玩电脑
使用 GitHub Copilot 将 PowerShell 脚本升级到 Microsoft Graph PowerShell SDK
GitHub Copilot 简介
Microsoft 正在标准化 Microsoft Graph API,以便以编程方式访问 Microsoft 365 租户配置、应用程序和用户数据,而不是依赖 Azure AD、Azure AD Preview 和 MSOL 等旧版 PowerShell 模块。事实上,这三个模块正在被弃用。虽然弃用日期已更改,但组织应计划更新其脚本,以便不再依赖这些模块。
GitHub Copilot 可以帮助您进行升级。 GitHub Copilot 是一款由 AI 驱动的代码完成和建议工具,由 GitHub 与 ChatGPT 的制造商 OpenAI 合作开发。它可以根据代码编辑器中的自然语言注释和上下文提供实时代码建议和自动完成功能,从而帮助任何人编写代码。代码建议和 Copilot 对 PowerShell 的理解相结合,可以帮助租户管理员将其旧脚本转换为使用 Microsoft Graph PowerShell SDK 中的 cmdlet。需要注意的是,GitHub Copilot 只是一个工具。它不能取代对 Microsoft Graph 工作原理的基本理解。对于那些有兴趣了解 Microsoft Graph SDK 的人,Practical 365 有大量涉及 Microsoft Graph PowerShell SDK 使用的文章。
此 Github Copilot 快速入门将指导您注册和安装 Visual Studio Code 插件。如果您尚未注册,可以免费试用 30 天。 30 天后,费用为 10.00 美元/月。 30 天内您可以做很多事情,因此值得测试 GitHub Copilot。
开始更新脚本之前
在接触脚本中的任何代码之前应该完成两件事:
- 了解脚本的作用。
- 测试脚本的作用。
也许剧本在你加入组织之前就已经投入制作了。也许剧本作者最近离开了组织。如果您不知道脚本的作用,并且进行了更改,您如何知道它是否仍然执行其应该执行的操作?在更新代码之前,脚本是否每运行 10 次就会抛出一个错误,或者这是一个新问题?
一套测试可以充当一个简单的清单,以确保脚本执行其应该执行的所有操作。根据脚本的不同,谨慎的做法可能是检查并确保它没有做任何不应该做的事情。如果您对自动化测试感兴趣,请考虑使用 Pester。无论测试是否自动化,您都必须知道预期结果是什么,以便可以将它们与更新脚本的结果进行比较。
最重要的是,一旦开始更新代码,在进行任何更改之前,您必须知道哪些有效,哪些无效。
使用 GitHub Copilot 更新脚本代码
要更新脚本,请勿将所有代码扔给 CoPilot 并说“使用 Microsoft Graph PowerShell SDK 重写此代码”。相反,请检查代码并找出使用旧模块中的 cmdlet 的位置。从那里,使用 Copilot 替换这些代码行。
我有一个类似于“如何使用适用于 PowerShell 的 Microsoft Graph SDK 创建 Microsoft 365 许可报告”的脚本,该脚本为 Microsoft 365 租户生成许可证库存报告。该脚本使用 MSOL 模块,使用 Connect-MSOLService cmdlet 连接到 Microsoft 365,获取产品 SKU,并根据可用许可证数量生成报告。该脚本大约有 350 行代码。然而,需要改变的核心只有大约10行代码。我将这些代码行复制到临时脚本文件中,并开始与 Copilot 交互。
下面的代码是一些原始代码的摘录。此代码片段不是生成完整的 HTML 报告,而是写出变量,以便我可以测试旧版本的输出并将其与新版本进行比较。
Connect-MSOlService
$licenses = Get-MSOlAccountSku
Foreach ($license in $licenses)
{
if($license.AccountSkuId -eq "andylanddev:SPE_E3")
{
$spe3Active = $license.ActiveUnits
$spe3Warning = $license.WarningUnits
$spe3Consumed = $license.ConsumedUnits
}
if($license.AccountSkuId -eq "andylanddev:SPE_E5")
{
$spe5Active = $license.ActiveUnits
$spe5Warning = $license.WarningUnits
$spe5Consumed = $license.ConsumedUnits
}
}
$spe3Warning
$spe3Active
$spe3Consumed
$spe5Warning
$spe5Active
$spe5Consumed
完成 Github Copilot 快速入门后,您应该安装了 Copilot Chat Visual Studio Code 扩展。
在图 1 中,我选择了上面显示的代码,并提示 Copilot Chat“更新此代码,以便它使用 Microsoft.Graph PowerShell 模块而不是 MSOL 模块”。
Copilot 执行了多项操作来升级代码。首先,它将 Get-MSOLAccountSku cmdlet 替换为 Get-MgSubscribedSku。 Copilot 还知道属性 AccountSkuId 必须替换为 SkuPartNumber。
我将新代码复制到 demoscript.ps1 中旧代码的下方,以便于比较输出(图 2)
从这张截图来看,这一点并不明显,但我遇到的一个问题是 Copilot 使用的范围不正确。 Copilot 建议使用Directory.Read.All。但是,列出订阅的 SKU API 的文档指出,此 API 调用需要 Organization.Read.All 权限。除了官方 Microsoft 文档之外,请阅读有关如何确定您需要的 Microsoft Graph 权限的文章,了解有关确定 Cmdlet 所需范围的详细说明。
我发现自己与 GitHub Copilot “聊天”,几乎就像是结对编程伙伴一样。我想确保下次我询问时,它会提供正确的范围。
虽然我有正确的范围,但 Github Copilot 写出了该范围的完整 URI,如图 2 所示。我将其更改为使用较短的版本,即 Organization.Read.All(图 3)。我还添加了“NoWelcome”参数开关,以最大限度地减少脚本连接到图表时的输出。除此之外,新旧脚本的输出是相同的。当您对测试通过感到满意后,您可以开始测试整个脚本以将其升级到 Microsoft Graph PowerShell SDK。
原始代码和更新版本的副本可以在此 Github Gist 上找到。
Github Copilot 稳步提升
当我一年多前开始使用 GitHub Copilot 时,我在玩了大约一周后放弃了它。这是一个可爱的玩具,但它带来的问题比它解决的问题还要多。大约 6 个月前,我决定再试一次,代码完成的改进令人难以置信。大约 90% 的情况下,这些建议都是正确的。
然而,最终让我开始每月支付 10 美元的功能是 GitHub Copilot Chat,该功能于今年早些时候在 Microsoft Build 上宣布,现在可供所有人使用。请查看这篇文章,了解有关该公告的详细信息。随着 Copilot Chat 的推出,我不再需要记住一堆键盘快捷键或在 IDE 中挖掘菜单来重构代码。我可以简单地要求 Copilot Chat“向此函数添加基于注释的帮助”,它会自动添加帮助,并为我正在编写的函数的描述和概要提供一个很好的起点(图 4)。
我不希望范围成为参数,因此我要求 Copilot Chat 将其删除(图 5)。
当我编写代码时,GitHub Copilot 为我做了很多琐碎的工作,当我在无法访问 GitHub Copilot 的 IDE 中工作时,我发现自己感到沮丧。
GitHub Copilot 完美吗?绝对不是。它生产的所有东西都应该经过测试和验证。开发测试用例并实施它们应该始终是脚本开发的一部分。
虽然很微妙,但我可以看出它改变了我编写代码的方式,对我来说它每月 10 美元绝对值得。如果您至少每周编写 PowerShell 代码,我会说 GitHub Copilot 是一项值得的投资。如果您还没有完全做到这一点,请在 3 到 6 个月内再试一次,您可能会感到惊喜。
Active Directory 的网络安全风险管理
了解如何通过这些网络安全风险管理解决方案预防 AD 攻击并从中恢复。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag