言归正传,谢谢你们今天陪Cantgis 一块儿学习powershell的基础知识。shell
不要着急操做,首先Cantgis先简单的剖析一下powershell的功能,命名规则等,以前咱们讲过powershell学习和使用是很是的简单。windows
下面咱们开始挑重点要点 简明扼要的讲什么是powershell。网络
多大130个命令行在执行常见的系统管理任务工具,包括管理服务管理流程 管理事件日志 管理证书,修改注册表,还有使用WMI(windows management instrumentation)ide
powershell支持现有的语言脚本,用于现有的命令汗工具,以及多个版本的windows。函数
管理windows数据以不一样的存储区和格式的标准实用车程序。包括ADSI WMI COM对象、ActiveX数据对象(ADO)、HTML和XML工具
复杂的表达式分析器和.NET Framework在命令行的对象操性能
可扩展的接口,可以以便咱们后续来自定义脚本开发Cmdlet学习
好了看到上面的功能有点展现了,咱们开始火烧眉毛想要学习powershell这么强的语言spa
下面咱们一块儿了解一下这个语言命令 和参数模式。操作系统
windows powershell采用咱们以前讲到的内置cmdlet命令,也就是cmd.exe。
这个给咱们带来很是好的消息,若是您是老手确定知道,若是你是开始和我同样学习,别着急,接下来咱们开始讲一下所谓powershell的命名名称和特色。
powershell实际上采用了“动词-名词”的命名系统
动词并不是必定为英文单词哦,,可是他会表示为powershell中的特定操做。名词和全部语言名词十分相似,描述在系统管理界面层起到很是重要做用的对象类型。
如get-process stop-process get-service 和stop-sercice 命令
若是仅仅是两个名词和两个动词,则并不会简化了解那么多命令的过程,可是呢,咱们发现若是是由10个动词和10哥名词组成的一组标准命令名称,则咱们只须要记住20个单词,而且使用这些单词能够构成100哥不一样命令名称哦!
你知道的,一般状况下 经过命令的名称便可识别其用途,从而对新命令应该使用什么样的名称。
例如计算机关机命令可能为stop-computer;用于列出网络上全部计算机的命令可能为get-computer;用于获取系统的时间日期咱们很是简单 键入get-date。
全部的cmdlet中包含了一些公共参数(common parameters), 例如: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 这些参数大多用于一些脚本调试等.
固然以前一章咱们提到了别名机制,这里咱们重点讲一下(137个别名)
PS C:\Users\Administrator> (Get-Command -CommandType alias).count 137
在powershell中,还容许为命令建立本身熟悉的别名,这样对于那些太长的命令使用本身自定义的缩写来表示,对于某些本身不太容易记忆的命令使用本身喜欢的名字来表示,这一迪昂是否是很是人性化呢。
名别即将所输入的命令名称与另外一个名称相关联。例如,powershell有一个名为clear-host的内部函数,用于清理窗口,若是咱们偷懒直接键入clear 会出现什么呢?固然powershell很是聪明他会理解为这是clear-host的函数别名,从而运行clear-host 函数
TAB键子的那个匹配活找到下一个匹配文件,补齐功能很是省事,它会自动尝试补齐剩下的命令字符串。
例如,咱们输入get-co 而后键入【tab】则powershell将会自动扩展为get-command cmdlet ,若是再次按【tab】powershell讲仅有匹配另外一个与get-content替换上一个command。
关于策略执行,powershell在默认状况下是不容许任何脚本,但不少时候之后咱们会看到不少管理功能都须要使用脚本才能完成。另外使用脚本完成,还能够减小不少操做中的繁琐操做。
在powershell中拥有四个执行策略。
Restricted 不加载配置文件或者运行脚本。默认值为restricted,
allsigned:要求全部脚本和配置文件有可信任的发布者签名,包括在本地计算机编写的脚本
rsmotesigned 要求是从Internet下载全部脚本和配置文件有可信任的发布者签名
unrestricted 加载全部配置文件并运行全部脚本,若是运行从Internet下载的未签名脚本,则系统提示用户要得到相关权限。
修改脚本的执行策略命令为set-executiopolicy 若是执行策略改成运行受信任的脚本,在运行命令,set-executionpolicy allsigned就能够
后续咱们会讲到脚本,这个powershell的脚本文件扩展名为.ps1,在命令下键入脚本的名称就能够运行该脚本。powershell的脚本文件可使用记事本等软件进行编写,扩展能力很是强悍
powershell管理,在整个命令行界面是最有价值的概念。若是适当使用管道。不只能够减小复杂的输入命令所需的工做量,只须要使用管道运算符“|”将命令链接一块儿,便可奖每个命令的输出用做下一个命令的键入哦!!
下面咱们输出powershell命令,当作一个小例子。首先我要强调 在powershell中任何运行结果均可以定向输出指定文件中。
在输出过程当中使用的命令为out-file,在平常生活中咱们用‘>’代替。
下面咱们把当前计算机的进程输出到指定的一个txt文件,咱们输出后打开这个txt文件,查看当前的进程详细信息。
PS C:\Users\Administrator> Get-Process > D:\getmac.txt PS C:\Users\Administrator>
好了,不会使用powershell没关系,咱们有帮助系统,可以快速合理的实现powershell操做,两个帮主:get-command 和get-help
使用get-help get-alias 得到帮助关于这个会话命令的
使用get-help get-alias -examples 显示示例
显示帮助的主题的列表
get-help about_*
显示帮助文件,在powershell 中执行
get-help get-host
显示帮助系统中(get-help)全部帮主文件列表,键入命令
get-help *
显示完整的帮助信息
get-help get-host -full
get-command 检索全部命令名称
显示WMI 类列表。
get-wmiobject -list get-wmiobject -list -computername . get-wmiobject -list -computername localhost get-wmiobject -list -computername 127.0.0.1
注意 在使用get-wmiobject时候链接到远程计算机 远程计算机必须运行wmi 而且在默认配置下所使用的帐户必须是远程计算机上的本地管理员,在远程计算机不须要安装powershell
从而咱们能够对未运行powershell但可使用wmi操做系统进行管理
函数(function)有名称的代码块(scriptblock).
下面我写一个简单的函数定义,函数就是一段你输入到PowerShell的命令集合
PS C:\Users\Administrator> function Get-DayToBeiJingOlympic >> { >> ([datetime] "2013-06-15" - [datetime]::Now).Days; >> } >> PS C:\Users\Administrator> Get-DayToBeiJingOlympic 0 PS C:\Users\Administrator> function Get-DayToBeiJingOlympic >> { >> ([datetime] "2013-06-14" - [datetime]::Now).Days; >> } >> PS C:\Users\Administrator> Get-DayToBeiJingOlympic -1 PS C:\Users\Administrator>
第一次 我提到 距离2013年6月15日 有多少天 0天
第二次我提到距离2013年6月14日有-1天
脚本(script)
PowerShell在交互式Shell(interactive Shell)和脚本语言(script Language)之间进行了平衡, 提供了执行脚本的能力. 脚本相似于函数, 存放在文件中, 调用时由PowerShell载入内存, 编译并执行.
效率上来说, 脚本慢于函数(function), 主要缘由在于函数只会在第一次调用时被编译, 而脚本每次调用都会被编译一次. 可是编译后的执行阶段, 他们的性能是近似相等的.
有一些命令应该禁止在powershell中使用如: dir, findstr, del, ping. 这些命令就是Windows以前的可执行文件(非.Net命令行可执行文件). 在PowerShell中调用这些命令效率是最低的, 由于执行他们PowerShell须要建立一个新进程. 此外由于这些命令早于PowerShell, 所以他们的信息输出都是基于文本的(也能够说是字符串), 所以丧失了PowerShell对对象的处理能力。
今天我就到这了,谢谢你们耐心看完Cantgis,相信你已经理解了什么是powershell 他的工做机制是什么了,接下来咱们会更深刻的了解powershell的世界。