[玩转系统] 构建您的 Microsoft 365 PowerShell 工具箱
作者:精品下载站 日期:2024-12-14 04:09:00 浏览:14 分类:玩电脑
构建您的 Microsoft 365 PowerShell 工具箱
获得适合工作的工具
PowerShell 对于任何 Microsoft 365 管理员来说都是一个重要工具,尤其是在较大的环境中。在批量处理任务、创建报告和公开无法通过多个 GUI、管理中心和客户端获得的数据之间,如果不具备至少使用 PowerShell cmdlet 的基本能力,就很难完成任务。话虽如此,利用基本 cmdlet 执行日常任务与最大限度地发挥 PowerShell 的潜在优势之间是有区别的。例如,使用 Azure 自动化运行计划的脚本。
在本文中,我概述了一些关键工具和概念,以帮助租户管理员为 PowerShell 构建“工具箱”,从而使几乎所有脚本编写任务变得更轻松、更强大。我在这里重点关注 Microsoft 365,但这些技巧可以轻松转化为其他 PowerShell 任务。
Microsoft 365 杀伤链和攻击路径管理
有效的网络安全策略需要对攻击如何展开有清晰、全面的了解。阅读本白皮书以获得保卫您的组织所需的专家见解!
安装和更新模块
每当我更新笔记本电脑或购买新机器时,记住需要安装哪些 PowerShell 模块可能会让人筋疲力尽。跟踪我为特定项目安装的模块或在解决问题时可能很麻烦,因为有许多模块我不经常使用。对我来说,PNP PowerShell 模块就是一个很好的例子。我是否在某些脚本中使用了 PNP? - 是的。我经常使用它吗? - 几乎从不超出非常具体的用例。这通常意味着当我回到旧项目时,我首先需要意识到它不存在,然后我去安装它。
也许这不是可能发生的最不方便的事情,但它可能会让人烦恼,特别是在新设置上。确保您始终拥有所需模块的一个好方法是创建一个安装文件 (.PS1) 以一次性安装每个所需模块。安装每个模块的简单文件(如下所示)可以在设置新机器时节省时间和精力。
$Modules = @(
"AZ",
"ExchangeOnlineManagement",
"ImportExcel",
"Microsoft.Graph",
"Microsoft.Online.SharePoint.PowerShell",
"MicrosoftTeams",
"Microsoft365DSC",
"PNP.PowerShell"
)
Foreach($Module in $Modules){
Try{
Install-Module $module
}Catch{
write-host "Error Installing $module `n : $_ `n `n"
}
}
上述脚本中显示的模块是使用 Microsoft 365 时需要了解的一些关键模块。有趣的一点是,所需的大部分管理功能(或最终将)通过 Microsoft Graph API 和 Microsoft Graph PowerShell SDK 提供。这对于租户管理员来说是一件好事,可以简化使用哪些模块以及何时使用。还有许多脚本需要考虑需要更新才能使用 SDK(除非由于优先级更高而绝对必要,否则可能不会更新),所以我认为我们不能摆脱使用单个模块的情况Microsoft 365 管理很快就会实现。
安装模块一次很好,但一旦安装完毕,保持所有内容最新就很重要 - 特别是对于 Teams 或 Graph PowerShell SDK 等模块,它们可能会经常更改。使用类似的基于脚本的方法保持模块更新相对轻松,如如何确保您使用最新的 Microsoft 365 PowerShell 模块一文中详细介绍的那样。确保更新 Azure 自动化 PowerShell 模块时,这是一项关键任务。
确定模块安装范围
通过使用 PowerShell 维护模块,在您自己的计算机上安装您需要的所有必需模块(如果您的组织允许)是一项非常简单的任务,但有时您需要在受限设备(例如虚拟桌面或计算机)上安装模块。锁定的公司笔记本电脑。通常,您没有管理权限将模块安装到这些设备上的标准模块目录(“C:\Program Files\WindowsPowerShell\Modules”)中。
幸运的是,通过使用 -Scope 参数更改模块安装范围可以避免此问题。通过将 Install-Module cmdlet 的范围设置为 CurrentUser(而不是默认值 AllUsers),该模块将安装在当前用户的配置文件中的“C”下:\Users\\Documents\WindowsPowerShell\Modules”,绕过本地管理权限的要求。这会导致该模块仅可供安装它的用户使用,但这通常不是问题。可以修改上面的脚本以使用如下所示的更改来更改范围:
Install-Module $module -Scope CurrentUser
将此方法与 OneDrive 已知文件夹移动一起使用时要小心,因为这些模块将安装到您的 OneDrive 文件夹中,这可能会导致跨设备出现一些奇怪的行为。要解决此问题,请确保排除 PowerShell 相关文件(PS1、PSM1、PSD1),或者更好的是排除整个文件夹 (Documents\WindowsPowerShell\Modules)。
使用正确的编辑器
在创建更复杂的 PowerShell 脚本时,正确的编辑器可能意味着天壤之别。每台 Windows 计算机至少都配备了 Windows PowerShell 集成脚本环境 (ISE)。在 PowerShell 窗口中键入 cmdlet 与使用可以处理脚本的实际编辑器之间的区别是天壤之别。
将这一点提升到一个新的水平,Visual Studio Code (VS Code) 比 PowerShell ISE 拥有许多优势。它不像 Visual Studio 那样是一个完整的集成开发环境 (IDE),后者具有所有花哨的功能(以及资源要求),这使得非开发人员感到害怕。 VS Code 是一个代码编辑器,比 PowerShell ISE 更适合编写更长、更复杂的脚本(例如租户到租户迁移评估),但不像 Visual Studio 那样复杂。
Visual Studio Code 附带大量有用的功能,使处理大型项目变得更加容易,例如:
- 不同文件和脚本的多个选项卡。
- Intellisense - 自动完成代码和为 cmdlet 提供参数信息等功能的奇特名称。
- 自动格式化 - 如果您像我一样以非结构化方式编写脚本,那么这是一个关键功能。
- 语法突出显示——通过对不同类型的语法进行颜色编码,使代码更易于阅读。
- 集成终端,以便您可以在编写脚本时运行部分代码进行测试。
另一个主要好处是市场上有大量可用的扩展。 Excel Viewer(如图 1 所示)是市场上值得购买的一款出色的扩展。如果您像我一样花费大量时间使用 CSV 或 Excel 文件导入和导出到脚本,那么在编写代码时能够查看和编辑这些文件将会改变游戏规则。
版本控制和源代码控制(是的,这很重要!)
VS Code 的另一个强大功能是它与 Git 的集成。 VS Code 与 Git 无缝集成以进行源代码控制。我不会在这里深入研究 Git 的细节,因为有很多更有资格的人可以提供更好的细分,但我推荐这篇关于 Microsoft 365 租户管理员的源代码控制的文章(以及该系列中的后续两篇文章)开始了。
将 VS Code 与 GitHub 存储库集成就像下载 Git 一样简单,如上面的文章中所述,连接到存储库,并在准备就绪时通过提交推送更改(如图 2 所示)。 Git 的功能远不止这些,例如分支、问题和拉取请求,但要开始使用,这已经足够解决了。
Microsoft 平台迁移规划和整合
简化迁移规划,克服迁移挑战,更快地完成项目,同时最大限度地降低成本、风险和对用户的干扰。
可重用的功能
构建 PowerShell 工具箱时要记住的另一件事是,您永远不必重复执行相同的操作。当您为特定项目编写代码时,请始终尝试识别可以拆分为单独的可重用函数或模块的任何可重用部分。
例如,当我最初开始构建 Graph API 脚本存储库时,我们没有可用的强大的 Microsoft Graph PowerShell SDK,因此这些脚本必须向 Graph 发送单独的请求,包括手动请求访问令牌。我花了一些时间弄清楚如何在 PowerShell 中完成这项工作,一旦我弄清楚了,我就再也不想这样做了。我构建了三个基本函数来请求使用应用程序权限的 Graph API 访问令牌、使用委托权限的访问令牌以及在枚举结果页面时运行查询。
创建这些函数并不难,现在在线快速搜索会发现大量执行相同操作的代码片段。这些函数都可以在 GitHub 上找到,并且可以复制并粘贴到其他脚本中(它们出现在我的很多图形脚本中),也可以导入到脚本中,只要它们对计算机可用即可。导入就像运行 Import-Module cmdlet 一样简单,如下所示:
Import-Module c:\scripts\graph-StandardFunctions.ps1
导入后,您可以正常使用任何函数,从而节省大量重写已处理代码的时间。
当您构建函数时,请确保记录它们并定义输入参数,这样您就不需要每次使用它们时都调整它们。图 3 所示的函数就是一个简单的示例。
分享并以同样的方式分享!
最后,一旦您在存储库中拥有了自己的 PowerShell 工具箱,其中包含源代码控制、可重用函数和记录良好的脚本,请与其他人共享它们。我确信有很多人可以(并且已经)改进了我在网上分享的内容,同样 - 很高兴找到一个预先编写的脚本来完成您本来会花费大量时间的任务。 GitHub 是一个共享和协作代码的绝佳场所,如果使用正确的工具,一切都会变得更加容易。
猜你还喜欢
- 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