设为首页 收藏本站
查看: 776|回复: 0

02 认识powershell-Cantgis

[复制链接]

尚未签到

发表于 2018-8-24 13:20:53 | 显示全部楼层 |阅读模式
  言归正传,谢谢大家今天陪Cantgis 一起学习powershell的基础知识。
  不要着急操作,首先Cantgis先简单的剖析一下powershell的功能,命名规则等,之前我们讲过powershell学习和使用是非常的简单。
  下面我们开始挑重点要点 简明扼要的讲什么是powershell。

  •   多大130个命令行在执行常见的系统管理任务工具,包括管理服务管理流程 管理事件日志 管理证书,修改注册表,还有使用WMI(windows management instrumentation)
  •   powershell支持现有的语言脚本,用于现有的命令汗工具,以及多个版本的windows。
  •   管理windows数据以不同的存储区和格式的标准实用车程序。包括ADSI WMI COM对象、ActiveX数据对象(ADO)、HTML和XML
  •   复杂的表达式分析器和.NET Framework在命令行的对象操
  •   可扩展的接口,能够以便我们后续来自定义脚本开发Cmdlet
  好了看到上面的功能有点展示了,我们开始迫不及待想要学习powershell这么强的语言
  下面我们一起了解一下这个语言命令 和参数模式。
  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>
DSC0000.png

  好了,不会使用powershell不要紧,我们有帮助系统,能够快速合理的实现powershell操作,两个帮主:get-command 和get-help
DSC0001.png

  使用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的世界。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-556015-1-1.html 上篇帖子: MySQL数据库备份Shell脚本 下篇帖子: Linux Shell——函数的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表