



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PowerShell基础知识之一 本Blog所发表的所有原创文章, 未经许可, 禁止以任何形式进行转载. 作者: Edengundam(马涛)如果要学一门语言, 你就必须对语言的语法, 特性有所了解. 只要对语言的各个环境了解, 才能更好编写, 调式, 部署你的程序. 因此, 教程第二部分将会着重于如下几个方面:1. PowerShell, Shell, 脚本语言等概念;2. 参数绑定;3. 类型转换.这些基础知识, 希望大家不要轻视, 因为后面的教程将会直接引用这些概念. 首先, 我们先来调查PowerShell中最重要的元素: 命令(Command). 在PowerShell中, 命令分为
2、四类: cmdlet, function, script和native Windows commands. 可能看到这四个英文名称会有些头大, 我们来仔细了解一下.1. cmdlet在PowerShell官方blog上, 有篇关于Cmdlets和API的介绍. 因为PowerShell建立在.Net上, 再加上COM, WMI, ADO, XML等技术. 使得PowerShell对于.Net应用开发人员, 服务器管理人员来说都会非常方便, 通过这些已有的接口, 即可完成大量的任务. 但是, PowerShell的设计者明确的指出Cmdlets是PowerShell的灵魂. Cmdlet是Com
3、mand-Let的缩写. cmdlet这类命令有一种统一的命名方法: Verb-Noun, 也就是 动词-名词. 如果你是一名.Net程序员, 那么编程规范中应该也会提出, 对于方法(method)的命名, 最好使用动词-名词形式配合骆驼(Camel)命名法. 查看有哪些cmdlet参考如下:PS C: get-command -CommandType cmdletCommandType Name Definition- - -Cmdlet Add-Content Add-Content -Path -Value Object.Cmdlet Add-History Add-History -I
4、nputObject -Pass.Cmdlet Add-Member Add-Member -MemberType -Name.Cmdlet Add-PSSnapin Add-PSSnapin -Name -PassThru -Ve.Cmdlet Clear-Content Clear-Content -Path -Filter Strin.Cmdlet Clear-Item Clear-Item -Path -Force -Filter .Cmdlet Clear-ItemProperty Clear-ItemProperty -Path -Name (get-command -Comman
5、dType cmdlet).count129129确实有点多, 但是实际上在学习过程中你会发现学习他们的过程比你学习unix shell中命令更加容易些, 原因稍后为你解答. cmdlet是可以进行扩展的, 如果你想开发自己的cmdlet, 你需要下载PowerShell SDK. 目前, 我只知道该 SDK 包含在了Windows Vista Platform SDK中. 下载该 SDK, 需要进行正版验证. 在伴随着教程的编写过程, 我也会阅读PowerShell SDK中关于PowerShell的介绍, 并尽量用最简单的语言将需要注意的内容, 传达给大家. cmdlet的开发并不复杂,
6、可以使用C#作为实现语言, PowerShell SDK已经实现了好了cmdlet的一个基类, 开发的cmdlet只需要继承该基类. 通过这种开发模式, 最大的优点: (1). 所有的cmdlet中包含了一些公共参数(common parameters), 例如: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 这些参数大多用于一些脚本调试等. (2). 所有的cmdlet中的参数(parameters)具有相似的参数, 相同的类型, 甚至具有相同的性质. 对于接受输入的某些cmdlet来说, 输入的参数就叫做
7、-InputObject, 参数类型一般是object, 而通常都会具有从管道线读取处理对象的属性.这种一致性带来的最大好处就是, 对于一个命令, 往往你只需要关注命令的特性, 不需要记住复杂繁多的参数. 如果你熟悉unix shell下的utils coretools那么我相信, 例如awk使用-F指定一个支持正则表达式的与分隔符, cut使用-d来分割, sort使用-t进行分割对你来说是痛苦的. 在PowerShell中, 你甚至不需要对cmdlet产生的输出进行分割. 这点你会在稍后看到.cmdlet编译后的结果不是可执行文件, 而是dll文件, PowerShell启动时, 将这些命
8、令加载, 这些命令执行效率最高, 因为他们在PowerShell时被载入PowerShell进程内.2. 函数(function)函数, 准确的说就是: 有名称的代码块(scriptblock). 下面就是一个简单的函数定义:PS C: function Get-DayToBeiJingOlympic (datetime 2008-08-08 - datetime:Now).Days; PS C: Get-DayToBeiJingOlympic370细节大家可以不用关心, 稍后都会讲到. 函数就是一段你输入到PowerShell的命令集合.但是函数在被定义后, 才存在于PowerShell内存
9、中, 当PowerShell退出时, 就会消失.效率上, 函数在第一次调用时需要编译, 因此第一次调用速度较慢. 3. 脚本(script)PowerShell在交互式Shell(interactive Shell)和脚本语言(script Language)之间进行了平衡, 提供了执行脚本的能力. 脚本类似于函数, 存放在文件中, 调用时由PowerShell载入内存, 编译并执行. 效率上来讲, 脚本慢于函数(function), 主要原因在于函数只会在第一次调用时被编译, 而脚本每次调用都会被编译一次. 但是编译后的执行阶段, 他们的性能是近似相等的.4. native Windows
10、command我不知道应该这个东西用什么名字. 这类命令在Windows世界大量存在, 譬如: dir, findstr, del, ping. 这些命令就是Windows之前的可执行文件(非.Net命令行可执行文件). 在PowerShell中调用这些命令效率是最低的, 因为执行他们PowerShell需要创建一个新进程. 此外因为这些命令早于PowerShell, 因此他们的信息输出都是基于文本的(也可以说是字符串), 因此丧失了PowerShell对对象的处理能力. 因此, 如果你知道PowerShell的实现, 就避免使用这些命令. 讨论完命令, 我简单介绍下别名(alias):PS
11、C: (Get-Command -CommandType alias).count101你一定在想, PowerShell为什么提供了这么多别名, 难道要累死我们?PowerShell为了方便使用windows和unix, linux的人们, 支持了两套别名, 譬如dir相对于ls, 还有unix, linux的grep等. 这样无论你使用windows还是linux都能相对来说快速的上手PowerShell. PowerShell Version 1.0中有一个缺陷, 既定义别名时, 不允许指定参数. 这无疑是PowerShell的一个缺陷. 但是因为cmdlet中参数较少(一般都是10个以
12、内), 因此大多数时候, 你不需要定义带有参数的别名, 如果真的需要, 可以用函数来替代. 这种缺陷, 与代码块的执行等功能有冲突. 希望在后续版本能有别名功能能够更加强大.Windows PowerShell 是微软公司为 Windows 环境所开发的壳程式(shell)及脚本语言技术,採用的是命令行界面。这项全新的技术提供了丰富的控制与自动化的系统管理能力。之前的专桉代号是 Monad,程式另一个名称叫 Microsoft Shell(MSHWindows系统下的PowerShell 即开发代号为Monad的命令行外壳和脚本系统管理工具 回答者: - 2008-7-6 10:23 即开发代
13、号为Monad的命令行外壳和脚本系统管理工具。 PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix, Linux等操作系统的距离. PowerShell的前身命名为Monad, 在2006年4月25日正式发布beta版时更名为PowerShell. PowerShell是一款基于对象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0. 能够运行在Windows XP SP2, Windows Vista, Windows 2003操作系统上. 能够同时支持WMI, COM, ADO.NET, ADSI等已有的Windows管
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025工业用地及厂房买卖合同范本
- 2025建筑工程承包合同(2)合同文件范本
- 关于酒店会场管理制度
- 公司图书购买管理制度
- 公路分部工程管理制度
- 单位食堂奖励管理制度
- 员工餐厅卫生管理制度
- 学校学前资助管理制度
- 幼儿游泳教练管理制度
- 公交场站保安管理制度
- 新概念英语第二册-lesson-77-A-Successful-Operation
- 2021版反洗钱考试题库
- 取髂骨植骨术后护理
- 中医推拿治疗儿童近视
- 社区服务中心突发事件应急预案
- 5.5 跨学科实践:制作望远镜教学设计八年级物理上册(人教版2024)
- 湖北省五市州2023-2024学年高一下学期7月期末地理试题(原卷版)
- 国家职业技术技能标准 6-30-05-05 挖掘铲运和桩工机械司机 人社厅发20235号
- 《电力系统继电保护》考试复习题库(附答案)
- 文化遗产概览学习通超星期末考试答案章节答案2024年
- 中石油加油站改造工程施工方案
评论
0/150
提交评论