Powershell的基础知识,包含以下知识点
Powershell的一些特性
Powershell对命令行和脚本环境添加了许多新的功能,以此来改善Powershell的管理和脚本脚本交互能力,想对于其他的命令脚本,Powershell有以下特性。
PS C:\Documents and Settings\Administrator> Get-Command *service
CommandType Name Definition
----------- ---- ----------
Cmdlet Get-Service Get-Service [[-Name] <String[]>] [-ComputerName ...
Cmdlet New-Service New-Service [-Name] <String> [-BinaryPathName] <...
Cmdlet Restart-Service Restart-Service [-Name] <String[]> [-Force] [-Pa...
Cmdlet Resume-Service Resume-Service [-Name] <String[]> [-PassThru] [-...
Cmdlet Set-Service Set-Service [-Name] <String> [-ComputerName <Str...
Cmdlet Start-Service Start-Service [-Name] <String[]> [-PassThru] [-I...
Cmdlet Stop-Service Stop-Service [-Name] <String[]> [-Force] [-PassT...
Cmdlet Suspend-Service Suspend-Service [-Name] <String[]> [-PassThru] [...
从输出结果中,可以看到可以获取指定的service,新建新的service,重启,设置service的一些状态,启动,停止等操作。注意在Definition列,内容并没有完全显示,可以后面会讲到如何调节其输出格式。
通过Powershell的发现特性,找到具体的命令之后,就可以通过Get-Help cmdlet 了解有关该mdlet 的详细信息。例如,要显示有关 Get-Service cmdlet 的帮助,在命令行输入以下命令。
Get-Help Get-Service
如果要查看该输出结果的成员信息,比如该输出结果有哪些成员,方法,返回类型等,可以通过管道运算符(|)将其执行结果传递给Get-Member,如输入以下命令可以查看Get-Service输出对象的成员信息(以下是部分输出信息)。
PS C:\Documents and Settings\Administrator> Get-Service | Get-Member
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
Disposed Event System.EventHandler Disposed(System.Object, System.EventArgs)
Close Method System.Void Close()
Continue Method System.Void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
其中MemberType列是成员信息的属性,是属性,事件,还是方法等。
一致性是Powershell主要优点之一,同一的接口降低了管理任务的复杂性。例如如果你学会了获取Get-Servce的帮助信息,那么就学会了查看所有命令的帮助信息。
理解Powershell中的一些重要概念
在开始Powershell的实际开发之前,理解以下概念非常有助于了解Powershell设计思想。
理解Powershell中命令的命名规范
使用大多数命令行界面时,通常会遇到以下问题。
Powershell命令集cmdlet通过使用"动词-名词"名称以减少命令记忆量。
PowerShell 使用"动词-名词"命名系统,其中的每个 cmdlet 名称均由标准动词、连字符和特定名词组成。PowerShell 动词并非一定为英语动词,但其表示 Windows PowerShell 中的特定操作。名词与所有语言中的名词十分类似,名词所受的限制较少,但它们应始终描述命令的操作对象。
举几个动词和名词的示例,来说明他们是如何减少您了解命令所需的记忆量。PowerShell 具有 Get-Process、Stop-Process、Get-Service 和 Stop-Service 等命令。
如果仅有两个名词和两个动词,则一致性并不会极大地简化您了解这些命令的过程。但是,假定是由 10 个动词和 10 个名词组成的一组标准命令名称,则您只需记住 20 个单词,而使用这些单词可以构成 100 个不同的命令名称。
通常,只需通过命令的名称即可识别其用途,而对新命令应使用什么样的名称,这通常也是显而易见的。例如,计算机关闭命令可能为 Stop-Computer。用于列出网络上的所有计算机的命令可能为 Get-Computer。用于获取系统日期的命令为 Get-Date。
在 Get-Command 中使用 -Verb 参数可以列出所有包含特定动词的命令(在后面的文章中会详细介绍 Get-Command)。例如,若要查看所有使用动词 Get 的 cmdlet,输入:
PS C:\Documents and Settings\Administrator> Get-Command -Verb Get
CommandType Name Definition
----------- ---- ----------
Cmdlet Get-Acl Get-Acl [[-Path] <String[]>] [-Audit] [-Filter <...
Cmdlet Get-Alias Get-Alias [[-Name] <String[]>] [-Exclude <String...
Cmdlet Get-AuthenticodeSignature Get-AuthenticodeSignature [-FilePath] <String[]>...
Cmdlet Get-ChildItem Get-ChildItem [[-Path] <String[]>] [[-Filter] <S...
Cmdlet Get-Command Get-Command [[-ArgumentList] <Object[]>] [-Verb ...
Cmdlet Get-ComputerRestorePoint Get-ComputerRestorePoint [[-RestorePoint] <Int32...
Cmdlet Get-Content Get-Content [-Path] <String[]> [-ReadCount <Int6...
...
-Noun 参数用处更大,因为使用该参数可以查看影响同一对象类型的所有命令。例如,若要显示可用于管理服务的命令,请输入以下命令
PS C:\Documents and Settings\Administrator> Get-Command -Noun Service
CommandType Name Definition
----------- ---- ----------
Cmdlet Get-Service Get-Service [[-Name] <String[]>] [-ComputerName ...
Cmdlet New-Service New-Service [-Name] <String> [-BinaryPathName] <...
Cmdlet Restart-Service Restart-Service [-Name] <String[]> [-Force] [-Pa...
Cmdlet Resume-Service Resume-Service [-Name] <String[]> [-PassThru] [-...
Cmdlet Set-Service Set-Service [-Name] <String> [-ComputerName <Str...
Cmdlet Start-Service Start-Service [-Name] <String[]> [-PassThru] [-I...
Cmdlet Stop-Service Stop-Service [-Name] <String[]> [-Force] [-PassT...
Cmdlet Suspend-Service Suspend-Service [-Name] <String[]> [-PassThru] [...
总结
通过学习本节内容,应当掌握以下内容