Two Days PowerShell:1

蓝咒 提交于 2020-02-05 03:43:40

 

  1. 介绍,什么是PowerShell
    1. UNIX 的世界有功能强大的 shell,现在 Windows 环境也有了;Windows PowerShell 不仅提供功能相当于BASH的命令列 shell,同时也内建脚本语言以及辅助脚本程序的工具。Windows PowerShell 是以 .NET 技术为基础,并且与现有的 WSH 保持回溯兼容,因此 Windows PowerShell 的脚本程序不仅能存取 .NET CLR,也能使用现有的 COM 技术。

      Windows PowerShell 包含了数种系统管理工具、简易且一致的语法,提升管理者处理常见如登录数据库、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等服务器软件都将内建 Windows PowerShell。

      Monad 是 Windows PowerShell 之前的项目代号,Microsoft Shell(MSH)则是另一个别名;

  2. 起源、优势和特点;
    1. 基于.NET的命令行,不是脚本语言;
    2. 一致性的设计让所有工具和系统数据的使用语法、命名原则都相同。
    3. PowerShell是一款基于对象的shell, 建立在.Net框架之上,能够同时支持WMI, COM, ADO.NET, ADSI等已有的Windows管理模型
    4. 超过 130 个命令行工具(称为“cmdlet”),用于执行常见系统管理任务,如管理服务、进程、事件日志、证书、注册表以及使用 Windows Management Instrumentation (WMI)
    5. 命令行工具采用标准命名约定和通用参数,易于掌握和使用;其中还包括用于对数据和对象进行排序、筛选以及格式设置的简便工具。
    6. 现有脚本语言、现有命令行工具以及多种 Windows 版本支持,其中包括 Windows XPWindows Server 2003Windows Vista™ 以及 Windows Server 代码名“Longhorn”
    7. 使用户能够浏览数据存储(如注册表和证书存储),就像面对文件系统一样。
    8. 用于管理位于不同存储中以及采用不同格式的 Windows 数据的标准实用程序,这些数据包括 Active Directory Service Interfaces (ADSI)Windows Management Instrumentation (WMI)、组件对象模型 (COM) 对象、ActiveX 数据对象(ADO)HTML  XML
    9. 在命令行进行的高级表达式分析和 .NET Framework 对象处理,其中包括对对象进行管道处理以帮助提高 IT 专业人员的工作效率。
    10.  可扩展的接口使独立软件供应商和企业开发人员能够构建自定义 cmdlet 以满足特有的应用程序和系统管理要求。

  3. 下载和安装;
    1. 我用的是PowerShell 2.0
    2. 下载 PowerShell 2.0 http://support.microsoft.com/kb/968929/zh-cn
    3. 下载WS-Management v1.1 http://www.microsoft.com/downloads/details.aspx?familyid=845289CA-16CC-4C73-8934-DD46B5ED1D33&displaylang=zh-cn
  4. 试试手;
    1. cmdlet 是 Windows PowerShell 的指令,cmdlet 的发音方式是 command-let。cmdlet 名称的格式都是以连字符号隔开的一对动词和名词,并且通常都是单数名词
    2. Try the following cmdlet:
      1. get-help *
      2. get-help * | more
      3. get-help dir;
      4. help dir; help 取代 get-help,最大的好处是 help 显示满整个窗口,预设就会自动暂停。
      5. get-childitem;dir 和 ls,虽然这并不是 cmdlet,但的确可用于 Windows PowerShell。原来这类的指令称为 alias(化名),类似 cmdlet 的快捷方式,例如 dir 和 ls 实际上都是 get-ChildItem 的 alias,get-ChildItem 才是 cmdlet;而 get-ChildItem 的功能,是列出磁盘驱动器指定位置的子项目。
      6. get-alias ;若要列出所有的 alias,可以用 get-alias 指令
      7. get-command *
    3. 除了 cmdlet 和 alias,Windows PowerShell 的指令还有 Application 和 Function 两种类型,前者指的是独立的程序文件(在 DOS 时代称为外部指令),后者是有名称的程序代码区块,也就是函式:不论 Application 或 Function 都可以当作 Windows PowerShell 指令来用,也可以用在脚本程序里。利用 get-command *,可以列出所有的指令
    4. Windows PowerShell 的管线功能;DOS 或 UNIX shell 都能利用「管线符号」(pipeline symbol),将指令的执行结果移转到另一个指令,让另一个指令处理前一个指令转来的数据。Windows PowerShell 的管线符号也是 |,例如之前用过的 get-help * | more,就是将 get-help * 的结果转给 more,而 more 会让结果显示满整个窗口就暂停。eg:
      1. ipconfig | findstr "Gateway"
      2. get-service | where-object {$_.Status -eq "Stopped"}
      3. get-service | where-object {$_.Status -eq "Stopped"} | sort-object -property DisplayName
    5. 新的脚本语言
      1. 微软为 Windows PowerShell 创造了新的脚本语言,但若你熟悉任何一种脚本语言,你也能很快熟悉 Windows PowerShell 的脚本语言。基本上,只要将 Windows PowerShell 的指令放进扩展名为 .ps1 的文字文件,这个文件就是 Windows PowerShell 的脚本程序了。因此在熟悉了 Windows PowerShell 的命令操作之后,只要再熟悉 Windows PowerShell 脚本语言的变量、数组、循环控制、条件控制,大致上就语言的部分就差不多。但若要以脚本程序管理 Windows 系统,除了要熟悉脚本语言,当然也必须熟悉 Windows PowerShell 指令和 WMI,毕竟脚本语言的目的只是黏合这些现成的软件组件。
      2. 行脚本程序还有几点注意事项,首先要确定脚本程序所在的位置是在执行路径里。

        再者,由于 Windows PowerShell 顾虑到安全性,预设是禁止计算机系统执行任何脚本程序,如果要解禁,必须利用 Set-ExecutionPolicy 指令。这个指令有三个参数:

        set-executionpolicy allsigned:允许执行具有信任签章的脚本程序。 

        set-executionpolicy remotesigned:仅允许执行从远程下载且具有信任签章的脚本程序。 

        set-executionpolicy unrestricted:这是最宽松的条件,允许执行任何脚本程序,不管有没有信任签章。但自己编写的脚本程序通常都没有信任签章。

         

         

         

         

    6. 善用脚本语言
    7. 善用 Windows PowerShell

  5. 新的脚本语言

 

 ref:http://www.cnblogs.com/shanyou/archive/2007/02/12/648204.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!