本课的视频教程: 请看置顶留言
Powershell 企业应用 - 第02章 Powershell的帮助系统_哔哩哔哩_bilibili
本章将为大家介绍在使用Powershell的时候,如何更有效率的得到帮助信息。
在使用Powershell的过程中,我们可以从以下四个来源获得在线帮助。
- Powershell的Get-Help命令。
- 搜索引擎。
- Microsoft Docs (https://docs.microsoft.com/zh-cn/powershell/)
- .NET Framework 类库
接下来,我们将对这四个帮助信息的来源进行逐一的介绍。
Powershell的Get-Help命令
默认安装的Powershell并没有包含帮助文件,虽然我们也可以通过Get-Help获得帮助信息,但这个帮助信息是系统自动生成的、只有语法的简要信息(图一)。对于我们理解命令的帮助不大。
不包含体积庞大的帮助文档,这样做的好处是减少了Powershell的体积,更好的适应各类的硬件平台,尤其是物联网设备的硬件往往是受限的。
所以,我们首先要做的是使用Update-Help
来进行帮助文件的更新。
Update-Help更新本地帮助文档的步骤
-
使用管理员运行Powershell,否则会有读写权限不足的报错信息。
开始-> 输入Powershell -> 选择使用管理员(图二)。
-
Update-Help更新帮助。
输入Update-Help命令,开始更新本地帮助。
在Powershell的模块,是帮助的最小单元。不带参数的Update-Help会更新所有的模块,如果我们想查询的只是某个命令的帮助信息,可以使用-module来更新命令所在的模块的帮助文件,操作如下:
-
首先使用Get-Command来查看命令所属的模块(图三)。
-
使用Update-Help -Module(图四)。
Get-Help所显示的帮助信息说明
当我们使用Get-Help来查询命令的帮助文档时,可能会得到以下信息(Get-Help返回的内容根据传入的参数的不同而不同)。
下面是对于帮助文档的所有字段的解释。
名称
Get-Service
解释: 名称部分显示的是帮助文件所对应的命令。
摘要
Gets the services on a local or remote computer.
解释:用一句话对命令进行简要说明。
语法 > #命令的使用方法和参数
#[-参数 ] 中的参数不是必选项。
#尖括号中的内容表示了某个数据类型的对象。
#这里的中括号代表数组,也就是一个或多个字符串。
Get-Service [-ComputerName
] [-DependentServices] -DisplayName [-Exclude ] [-Include ] [-RequiredServices] [ ]
Get-Service [-ComputerName
] [-DependentServices] [-Exclude ] [-Include ] [-InputObject ] [-RequiredServices] [ ]
Get-Service [[-Name]
] [-ComputerName ] [-DependentServices] [-Exclude ] [-Include ] [-RequiredServices] [ ]
解释:
[-ComputerName
]
1. ComputerName是参数名。
2.是参数值的类型是字符串类型,System.String[]的中括号,代表可以是字; 符串数组,也就是用逗号分隔的多个字符串作为参数的值,例如: -Computername DC1.Contoso.com, DC2.Contoso.com。
3. [-ComputerName]最外层的大括号代表此参数是可选的,可以不输入这个参数。在Get-Help命令中,如果指定Computername,将会查询给出的计算机所运行的服务,而不指定Computername,那么默认查询本地计算机所运行的服务。 [-DependentServices]
只有参数名,而没有参数值的参数是开关参数。当输入开关参数后,Powershell会有一个逻辑来运行开关参数为True的分支代码。如果不输入开关参数,Powershell运行开关参数是False的分支代码。一个命令可能会有多个语法。这是因为在Powershell中,并不是所有的参数都可以放在一起执行,不能放在一起执行的参数也叫做互斥参数。例如Get-Service命令中,-DisplayName, -Name和-InputObject都是互斥参数,所以需要用三个语法来表示Get-Service这个命令的全部用法。
说明
TheGet-Service
cmdlet gets objects that represent the services on a local computer or on a remote computer, including running and stopped services.
You can direct this cmdlet to get only particular services by specifying the service name or the display name of the services, or you can pipe service objects to this cmdlet.
解释: 对于Get-Service命令的详细描述。
参数
-ComputerNameGets the services running on the specified computers. The default is the local computer. Type the NetBIOS name, an IP address, or a fully qualified domain name (FQDN) of a remote computer. To specify the local computer, type the computer name, a dot (.), or localhost. This parameter does not rely on Windows PowerShell remoting. You can use the ComputerName parameter of
Get-Service even if your computer is not configured to run remote commands.
是否必需? False
位置? named
默认值 None
是否接受管道输入? True (ByPropertyName)
是否接受通配符? False解释:参数模块会显示出命令所接受的所有参数,首先是对于参数的说明。接下来时关于参数的属性进行介绍。
1. 是否必须: 这个参数是否是可选参数。
2. 位置: Named是命名参数,调用参数的时候必须输入参数名称。位置参数使用从0开始的数字表示,不用输入参数名称,只要放置在指定的位置即可。
3. 默认值:参数是否有默认值,对于有默认值的参数,如果不使用这个参数并对其赋值,那么命令会用默认值为参数赋值。
4. 是否接受管道输入: 可否用管道符传入值。可以根据属性名传值ByPropertyName或者根据值类型传值ByValue。这部分将会在之后介绍脚本参数的章节进行详细介绍。
5. 是否接受通配符:指明参数是否可以使用 * 这样的通配符。
输入 #命令所接受的参数的类型
System.ServiceProcess.ServiceController, System.String
You can pipe a service object or a service name to this cmdlet.输出 #命令所输出的参数的类型
System.ServiceProcess.ServiceController
This cmdlet returns objects that represent the services on the computer.解释:
输入代表此命令所接受的参数的所有类型。
输出代表此命令返回值的类型。
范例
--------- Example 1: Get all services on the computer ---------
Get-Service
This command gets all of the services on the computer. It behaves as though you typedGet-Service *
. The default
display shows the status, service name, and display name of each service.--- Example 2: Get services that begin with a search string ---
Get-Service "wmi*"
This command retrieves services with service names that begin with WMI (the acronym for Windows Management Instrumentation).解释: 范例部分是开发者给用户的范例代码。可以帮助用户更好的理解命令,以及提供一些命令的使用场景。
注释
You can also refer to Get-Service by its built-in alias, "gsv". For more information, see about_Aliases (../Microsoft.PowerShell.Core/About/about_Aliases.md).
This cmdlet can display services only when the current user has permission to see them. If this cmdlet does not display services, you might not have permission to see them. To find the service name and display name of each service on your system, typeGet-Service
. The service names appear in the Name column, and the display names appear in the DisplayName column. When you sort in ascending order by status value, "Stopped" services appear before "Running" services. The Status property of a service is an enumerated value in which the names of the statuses represent integer values. The sort is based on the integer value, not the name. "Running" appears before "Stopped" because "Stopped" has a value of "1", and "Running" has a value of "4".解释: 开发者给出的命令的一些备注信息。
相关链接 > #与命令相关的网站,Get-Help -Online参数用到。
Online Version: https://docs.microsoft.com/powershell/module/microsoft.powershell.management/get-service?view=power
New-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service
解释: 命令的在线帮助信息和相关命令。放在第一行的是在线帮助的网站链接,可以复制到浏览器进行查看。也是Get-Help Get-Service -Online
所转向的网址。
备注
若要查看示例,请键入: "get-help Get-Service -examples".
有关详细信息,请键入: "get-help Get-Service -detailed".
若要获取技术信息,请键入: "get-help Get-Service -full".
有关在线帮助,请键入: "get-help Get-Service -online"
若要查看参数,请键入: "get-help Get-Service -parameter".解释:额外的信息,介绍Get-Help的参数信息。
搜索引擎
Get-Help提供的是关于命令的使用方法,如果我们想知道针对问题的解决方案,可能就需要使用搜索引擎进行查找。
中文社区的一个问题是同样的内容被很多网站引用,造成的结果是搜索出来的结果虽然多,但是内容几乎相同。
对于搜索引擎,我的建议是使用Bing来进行搜索,尤其是国内如果找不到的话,不妨试试在必应的国际版,使用英文尝试搜索一下,可能会有惊喜。
Microsoft Docs
(https://docs.microsoft.com/zh-cn/powershell/)
Microsoft文档中心提供了Powershell的文档库,推荐阅读以下模块:
Powershell 101, 向导式的学习指引。
https://docs.microsoft.com/zh-cn/powershell/scripting/learn/ps101/00-introduction?view=powershell-7.2About关于主题,介绍Powershell的基本概念。
https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about?view=powershell-7.2
.NET Framework 类库
(https://docs.microsoft.com/zh-cn/dotnet/api/?view=netframework-4.8)
在这里可以查询到与Dotnet相关的类的帮助文档。
因为Powershell没有提供原生的数学计算方式,所以我们需要使用.NET提供的System.Math类的静态方法进行四舍五入等计算。
关于System.Math类,可以在.Net Framework类库中进行查询。