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

PowerShell学习笔记(一)

[复制链接]
YunVN网友  发表于 2018-9-3 07:58:50 |阅读模式
  一、PowerShell的起因
  微软Windows操作系统最初的设计目标是面向非技术用户, 比尔盖茨的目的是能够让像他妈妈那种不懂计算机甚至是对计算机不感兴趣的人都可以通过图形界面界面简单、直观和形象化的使用计算机。因此, 真正自动化, 强大的Shell一直不是微软公司所关心的问题。随着Windows开拓市场, 用户的反馈等, 微软意识到, 通过图形化工具管理一台计算机或许是很完美的手段, 但是随着企业需要管理的计算机数量提升, 就必须依靠更高效、自动化的计算机配置工具, 这是开发PowerShell的一个重要原因。
  二、为什么不使用已有的shell或扩展cmd.exe呢?
  我们熟知的bash, ksh是为unix, linux系统设计的shell, 从这些操作系统内核提供的system call来看, shell将内核的特性真正表现出来。Windows将大部分管理通过面向对象的方式进行管理, 提供了诸如COM, WMI等概念,也就是说Windows操作系统和unix/linux是大不同的, 所以不能直接使用为unix/linux系统设计的shell。传统的shell输出信息都是字符串, 这样有利于统一的处理, 字符串也是你唯一能够操作的对象,Windows已有的cmd可以说是给普通用户或个人用户使用的一套简单命令行工具,而PowerShell则是为了能够让Windows提供企业级的,自动化的,更加强大和优化的管理工具。PowerShell有一些核心的特性, 这些特性是比较复杂的, 他们的存在是为了让传统shell用户能够尽量获得相似的用户体验,对于普通用户, 你不需要理解和掌握这些复杂的特性, 但是对于想深入理解和掌握PowerShell的朋友, 这些特性对你将会产生巨大的帮助,因此选择了重新创建一门新的语言。换句话说cmd是民用且入门级的,而PowerShell则是军用且高端级的,定位不同。
  三、PowerShell的一些特点
  以往cmd相对于Shell有很多不足,比如命令偏少,部分命令功能偏弱,对正则表达式不支持等等。但现在PowerShell一下子就补上来了。2.0 RTM版内建支持414个命令(术语称为cmdlet),支持正则表达式,强大的管道应用(其实管道本身的功能和以前差不多,关键是冒出来一堆能用管道的命令,比如more, sort, foreach等等),和系统的联系也比以前紧密了很多。PowerShell 是一种很强命令行解析程序,还配有高效的脚本开发环境,可以高亮显示语法的正确性,同早期的命令提示符(CMD)相比有很大的不同,命令的可读性有了较大的提升、运行效率也有极大的改善,同时兼容CMD命令与一些Linux命令。
  四、学好PowerShell的一些感悟
  PowerShell最初的蓝本是Posix的shell标准, 并借鉴了大量的Perl语言中精华, 提供了一个基于对象的脚本环境。并且大量特性与C#语言相同, 因此C#到PowerShell的转换是非常容易的。如果我们有bash, perl, .Net, WMI, COM, VBscript的相关知识, 那么学习PowerShell的过程就会很轻松很短暂更短。但是对于掌握unix/linux下的bash, ksh用户, 最困难的步骤是对问题的处理方式, 思维方式转变。
  五、一些简单的基本例子
  相对于传统的命令行工具,PowerShell对很多用户来说都会显得非常陌生。究竟 PowerShell支持哪些命令呢?其实PowerShell可以管理系统进程,服务,注册表,系统日志甚至证书等多项内容。
  get-command       想知道它支持哪些命令,只 需要在窗口内输入get-command并按下回画就可以了,这时屏幕上会显示所有PowerShell支持的命令。
  get-help       此处除了可以显示命令的类型外,还会显示名称和描述。想查看某个命令的详细用法就可以使用get-helt命令来获得帮助,比如要查看add-content命令的详细内容,就可以输入get-help add-content,按下回车后就会显示命令的名称,摘要,语法,详细说明,相关链接以及备注。要想更深入了解powerShell就要经常获取帮助的。
  PowerShell应用简单一例:
  PowerShell可以方便地查看和结束系统内的进程,这样不仅可以监控系统内的可疑进程, 还可以轻松地将其关闭。要想查看当前系统内的进程,就需要打开PowerShell,输入get-process后按下回车,这样系统中进程的句柄,进程名,进程占用处理器时间和进程唯一标识符就会显示出来。
  如果要结束某个或多个进程,就需要记录下进程的唯一标识符,在powerShell中输入Stop-process 一个或多个进程ID,按下回车后进程即可被自动结束。
  用别名快速启动程序
  对于某些常用的命令,powershell还支持将其设置为别名使用。比如需要给get- process设置别外,就可以在powershell中输入set-alias gp get-process,其中gp为命令get-process的别外。按下回车后直接用gp就可以代替get-process命令了。
  同理很多系统内建的工具也可以在powershell中设置别名了,比如在 powershell中输入notepad后就可以启动记事本。要想更快地启动记事本,就可以为其设置别名,输入set-alias np notepad后按下回车,这样再次输入np就可以打开记事本。如下图所示:
DSC0000.jpg

  好了,今天就到这,外出爬山拍照去,下期见!


运维网声明 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-561802-1-1.html 上篇帖子: Powershell批量禁用指定用户及将禁用用户移动到指定OU 下篇帖子: PowerShell学习笔记(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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