PowerShell学习笔记(一) 初探PowerShell

Windows PowerShell Cmdlet

Windows PowerShell 是专为系统管理员设计的新 Windows 命令行 shell。Windows PowerShell 包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

与接受和返回文本的大多数 shell 不同,Windows PowerShell 是在 .NET Framework 公共语言运行时 (CLR) 和 .NET Framework 的基础上构建的,它接受和返回 .NET Framework 对象。环境中的这一根本更改带来了管理和配置 Windows 的全新工具和方法。

Windows PowerShell 引入了 cmdlet(读作“command-let”)的概念,这是内置到 shell 中的一个简单的单一功能命令行工具。可以分别使用每个 cmdlet,但是组合使用这些简单的工具执行复杂任务时才发挥其作用。Windows PowerShell 包括一百多个基本的核心 cmdlet,您可以编写自己的 cmdlet 并与其他用户共享它们。

与许多 shell 一样,Windows PowerShell 为您提供了对计算机上文件系统的访问。此外,使用 Windows PowerShell 提供程序还可以访问其他数据存储,如注册表和数字签名证书存储,就像访问文件系统一样容易。

 

新脚本语言

由于以下原因,Windows PowerShell 使用它自己的语言,而不是重用现有的语言:

  • Windows PowerShell 需要用于管理 Microsoft .NET Framework 对象的语言。
  • 该语言需要为使用 cmdlet 提供一致的环境。
  • 该语言需要支持复杂的任务,而不会使简单的任务变得更复杂。
  • 该语言需要与在 .NET Framework 编程中使用的高级语言(如 C#)一致。

 

处理对象

从技术上讲,.NET Framework 对象是 .NET Framework 类的实例,包含数据以及与该数据关联的操作。但是,可以将对象视为具有属性(与特性类似)和方法(可以对对象执行的操作)的数据实体。

例如,在 Windows PowerShell 中获取服务时,实际上是在获取表示该服务的对象。查看有关服务的信息时,所查看的是其服务对象的属性。此外,启动服务时(即,在将服务的 Status 属性更改为“started”时),所使用的是服务对象的方法。

类型相同的所有对象都具有相同的属性和方法,但是对象的每个实例可能具有不同的属性值。例如,每个服务对象都具有 Name 和 Status 属性。但是,每个服务都可以具有不同的名称和不同的状态。

准备就绪后,了解对象是很容易的。若要确定 cmdlet 正在获取什么类型的对象,请使用管道运算符 (|) 将“get”命令的结果发送到 Get-Member 命令。例如,以下命令会将 Get-Service 命令检索的对象发送到 Get-Member。

get-service | get-member 

Get-Member 显示有关服务对象的信息,其中包括对象的类型名称及其属性和方法的列表。 

若要查找特定对象的所有属性的值,请使用管道运算符 (|) 将“get”命令的结果发送到 Format-List 或 Format-Table 命令。将 format cmdlet 的 Property 参数与表示所有的值 (*) 一起使用。例如,若要查找系统上 Schedule 服务的所有属性,请键入:

get-service schedule | format-list -property *

 

 

对象管道

使用对象的一个主要优点是,它使得用管道传输命令(即,将一个命令的输出作为输入传递给另一命令)容易得多。在传统的命令行环境中,必须对文本进行操作,以便将输出从一种格式转换为另一种格式,并删除标题和列标题。

Windows PowerShell 提供了一个基于对象而不是基于文本的新体系结构。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。

在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在 Windows PowerShell™ 中,无需操作字符串或计算数据偏移量。

PS> ipconfig | findstr "Address"
        IP Address. . . . . . . . . . . . : 172.28.21.5
        IP Address. . . . . . . . . . . . : 172.30.160.225
 

对脚本的支持

 

如果重复运行特定的命令或命令序列,或者如果开发一系列命令来执行复杂的任务,则会希望在文件中保存命令并执行命令文件,而不是在提示符下键入命令。保存命令的文件称为脚本。

Windows PowerShell 除了提供交互式界面外,还完全支持脚本。在 Windows PowerShell 中,脚本文件的文件扩展名为 .ps1。若要运行脚本,请在命令提示符下键入该脚本的名称。文件扩展名是可选的。

例如:

c:\test\testscript.ps1

- 或 -

c:\test\testscript

即使脚本在当前目录中,也必须指定脚本文件的完全限定路径。若要指示当前目录,请键入目录名称或使用点 (.) 表示当前目录。例如:

.\testscript.ps1 

虽然脚本在一些企业中非常有用 -- 甚至是必需的,但是它们可以用于传播恶意代码。因此,通过 Windows PowerShell 中的安全策略(称为执行策略)可以确定脚本是否可以运行,以及它们是否必须包括数字签名。为了消除明显的风险,Windows PowerShell 中的执行策略都不允许通过双击脚本的图标来运行它。有关详细信息,请键入:

get-help about_execution_policies

Windows PowerShell 还包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结构。

 

posted @ 2010-06-05 12:27  碧青_Kwok  阅读(2363)  评论(1编辑  收藏  举报