[玩转系统] PowerShell 初学者(第 12 部分):PowerShell 模块
作者:精品下载站 日期:2024-12-14 07:28:17 浏览:13 分类:玩电脑
PowerShell 初学者(第 12 部分):PowerShell 模块
上次我们玩过 PowerShell Drives。在这一部分中,我们将重点介绍 PowerShell 的结构,特别是 PowerShell 模块结构。但首先,让我们看一下上一部分的练习。
该系列的所有部分都可以在这里找到:PowerShell 初学者(系列)
回顾(第 11 部分)
在第 11 部分中,我要求:
发现
了解如何使用 PS Drive 环境显示计算机名称。
创建
创建一个新的持久性 PowerShell 驱动器,该驱动器引用远程计算机上的共享文件夹。了解如何使该驱动器持久存在。 (使用在线帮助、本地帮助或其他)
让我们来做第一个更简单的部分。要查找计算机名称,我们必须浏览 env: 目录。在那里我们将找到存储在 PowerShell 驱动器中的计算机名称环境变量。
cd env:
dir *computer*
但最重要的是它是这样称呼的:
$env:computername
第二个任务要求创建一个引用共享文件夹的持久 PowerShell 驱动器。要将网络驱动器映射到 Client01 上驱动器号为 F 的共享文件夹“Data”,命令如下所示:
New-PSDrive -Name F -PSProvider FileSystem -Root \Client01\Data -Persist
在 Windows 资源管理器中快速浏览一下即可发现驱动器已正确映射:
就是这样。让我们继续了解 PowerShell 模块。
概括
Windows PowerShell 驱动器是一个数据存储位置,您可以像 Windows PowerShell 中的文件系统驱动器一样访问它。
什么是 PowerShell 模块?
有些人可能认为关于模块的知识不是初学者的话题。我不这么认为,因为您必须了解为什么某些命令在 Windows Server(例如域控制器)上可用,但在客户端操作系统上不可用。所有这些过程均由 PowerShell 模块控制。我们来看看PowerShell团队的原始描述:
模块是一组相关的 Windows PowerShell 功能,组合在一起作为一个方便的单元(通常保存在单个目录中)。通过将一组相关的脚本文件、程序集和相关资源定义为模块,您可以比其他方式更轻松地引用、加载、保留和共享代码。
https://msdn.microsoft.com/en-us/library/dd878324(v=vs.85).aspx
到目前为止,一切都很好。他们说这是一组功能。它们被组合在一个单元中。
概括
模块是一组相关的 Windows PowerShell 功能,组合在一起作为一个方便的单元(通常保存在单个目录中)。它通常是一组命令和代码。
使用 PowerShell 和文件系统查找 PowerShell 模块
正如您可能怀疑的那样,有一个用于此任务的命令。
Get-Module 显示当前导入的模块。请注意,这些模块是一组命令,正如 PowerShell 团队在上面提到的。
Get-Module
但还有更多。还有更多!列出所有运行的模块
Get-Module -ListAvailable
ListAvailable 和上面三个模块有什么区别?如果您尝试运行模块的命令之一,所有模块都会自动导入。这对于脚本编写来说是很重要的一点。
例如,我的小脚本 Do-Speak 可以在此处找到 Do-Speak:开始与远程计算机交谈 (System.Speech),该脚本列在模块 Do-Speak 中。
如果我尝试运行此命令,则与该命令同名的模块会自动加载到当前的 PowerShell 会话中。
现在,运行自定义脚本后,我可以看到模块已加载到当前会话中。
Windows Server 角色和功能的内置模块也是如此。如果运行任何 Active Directory 命令,相应的模块就会加载到 PowerShell 会话中。
有多种方法可以显示模块的所有命令。我给你看其中两个。
(Get-Module ActiveDirectory).ExportedCommands
或者,在我看来,更好的选择:
Get-Command -Module ActiveDirectory
因此,这部分的最后一个问题是我们如何找到有关此模块的信息?它们存储在哪里?我可以获得更多信息吗?答案是肯定的。
Windows 附带的模块的默认文件夹位于此处:
cd $PSHome\Modules
如果您编写自己的脚本,请将其放在此处供所有用户使用:
cd $Env:ProgramFiles\WindowsPowerShell\Modules
最后但并非最不重要的当前用户的位置:
cd $Home\Documents\WindowsPowerShell\Modules
好的,这部分就这样了。
到目前为止我们学到了什么?
Get-Module 列出所有当前导入的模块。 Get-Module -ListAvailable 列出了当您运行这些模块的命令时自动导入的所有模块。将所有自定义模块存储在 C:\ProgramFiles\WindowsPowerShell\Modules 中。
安装模块(仅限 Windows Server)
当您在 Windows Server 上安装新角色或功能时,您必须注意关联的 PowerShell 模块也已安装。
例如,如果将 Windows Server 升级为域控制器,请确保提供 IncludeManagementTools 参数。这包括所有 Active Directory 图形工具和 Windows PowerShell 模块。如果不提供此参数,服务器将被提升(在运行 New-ADForest 或 New-ADDomainController 后)为域控制器,但您必须从远程计算机管理服务器,因为没有可用的工具来管理域控制器。本地服务器。没有 Active Directory 用户和计算机 (dsa.msc),没有 AD 站点 (dssite.msc)...疯狂的事情吧?
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
如果您通过服务器管理器以图形方式安装新的角色和功能,请确保选中正确的复选框:
否则这个话题就没什么好说的了,因为一切都是自动发生的。
使用自定义模块
假设您发现了一个非常有趣的脚本。你下载它。然后你就有了代码。您可以使用 PowerShell ISE 打开它。就是上面的脚本。它测试与默认网关的连接。最重要的是,您甚至不需要知道网关的 IP 地址。它也适用于远程计算机。
function Test-Gateway {
param($Computer = $null,
$Count = "1")
If ($Computer -eq $null)
{Test-Connection -Destination (Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty Nexthop) -Count $Count}
else
{$Route=Invoke-Command -ComputerName $Computer {Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty Nexthop}; Test-Connection -Source $Computer -Destination $Route -Count $Count}
}
您认为您肯定会经常需要这个脚本。用它制作模块有什么问题吗?最大的优点是每次启动 PowerShell 时命令 (Test-Gateway) 都可用。这是一件好事,嗯?
在开始复制文件之前,创建一个“Test-Gateway”文件夹。请注意,文件名和文件夹名称必须匹配!
然后在 PowerShell ISE 中复制代码。 (要打开 ISE,请输入 ise)。
在您最近创建的文件夹中将该文件另存为 Test-Gateway.psm1(psm1 是 PowerShellModules 的文件关联)。
现在关闭 PowerShell。再次打开 PowerShell。尝试在不带任何参数的情况下运行 Test-Gateway。
从现在开始,该命令(模块)可在所有用户的每个 PowerShell 会话中使用。
顺便查看一下脚本运行的代码
Get-Command Test-Gateway -ShowCommandInfo
或者
Get-Command Test-Gateway | Select-Object -ExpandProperty ScriptBlock
请记住,我们已经了解了有关 Select-Object 的一些知识:PowerShell 初学者(第 8 部分):PowerShell 的力量 - 接触对象(获取成员、选择对象)
到目前为止我们学到了什么?
安装角色和功能时,请选中“包括管理工具”复选框。 使用 PowerShell ISE 导入自定义模块和代码。在 C:\ProgramFiles\WindowsPowerShell\Modules 中创建一个文件夹,并确保该文件夹和文件名匹配。将代码保存为 psm1 文件。每次运行命令时,PowerShell 都会导入该模块。
锻炼
这是下一部分的练习。
对于这一部分来说,熟悉 PowerShell 模块是一项简单但非常重要的任务:
前往 https://a-d.site/2018/02/02/powershell-test-open-tcp-ports-with-test-openport-multiple -hosts-multiple-port-numbers/ 并使所有 PowerShell 会话中的所有用户都可以使用此命令(代码)。
下次主题见:PowerShell 初学者(第 13 部分):PowerShell 远程处理
Patrick Gruenauer,PowerShell MVP
猜你还喜欢
- 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