02 认识powershell

言归正传,谢谢你们今天陪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的世界。

相关文章
相关标签/搜索