Powershell是专为系统管理员设计的全新的 Windows 命令行外壳程序。其构建在 .NET 公共语言运行时 (CLR) 和 .NET Framework 的基础之上,为您提供了对计算机上文件系统、注册表和数字签名证书的访问。
powershell引入了 cmdlet(读作“command-let”)的概念,每个cmdlet是内置的,可以分别使用,但是组合使用它们时更能发挥其作用。PowerShell 包括一百多个基本的核心 cmdlet,是用于操作对象的单功能命令。
cmdlet由短划线 (-) 分隔的动词和名词,如 Get-Help、Get-Process 和 Start-Service。在PowerShell 中,大多数 cmdlet 都非常简单,它们设计为与其他 cmdlet 组合使用。例如,“get”cmdlet 仅检索数据,“set”cmdlet 仅建立或更改数据,“format”cmdlet 仅设置数据格式,“out”cmdlet 仅将输出定向到指定的目标。每个 cmdlet 都具有一个帮助文件,可以通过键入以下内容访问它:
get-help <cmdlet 名称>
您最初可能没有意识到,在PowerShell 中工作时,所使用的是 .NET 对象。但是随着经验的增加,您会发现自己使用的是对象,甚至用对象进行思考。 从技术上讲,.NET 对象是 .NET 类的实例,包含数据以及与该数据关联的操作,可以将对象视为具有属性和方法的数据实体。 例如,在PowerShell 中获取服务时,实际上是获取表示该服务的对象。查看有关服务的信息时,所查看的是其服务对象的属性,启动服务时,所使用的是服务对象的方法。类型相同的所有对象都具有相同的属性和方法,但是对象的每个实例可能具有不同的属性值。例如,每个服务对象都具有 Name 和 Status 属性。但是,每个服务都可以具有不同的名称和不同的状态。
使用对象的一个主要优点是,它使得用管道传输命令(即,将一个命令的输出作为输入传递到另一命令)容易得多。通信通常需要字符串操作,以便将输出从一种格式转换为另一种格式,并删除标题和列标题。
PowerShell提供了一个基于对象而不是基于文本的新交互模型。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。
在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在PowerShell 中,无需操作字符串或计算数据偏移量。
PS> ipconfig | findstr "Address"
IP Address. . . . . . . . . . . . : 172.28.21.5
IP Address. . . . . . . . . . . . : 172.30.160.225
在PowerShell 中,脚本文件的文件扩展名为 .ps1,在命令提示符下键入脚本的名称即可运行脚本,扩展名是可选的。例如:c:testtestscript.ps1或c:testtestscript
即使脚本在当前目录中,也必须指定脚本文件的完全路径。可以使用点 (.) 表示当前目录。例如:.testscript.ps1
由于脚本可以用于传播恶意代码。因此PowerShell 中的安全策略允许您确定脚本是否可以运行,以及它们是否必须包括数字签名。PowerShell 中的执行策略都不允许通过双击脚本的图标来运行它。PowerShell包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结构。
若要显示 cmdlet 的帮助,请键入“get-help”,后跟该 cmdlet 的名称。例如:get-help get-command
(如 Get-Help、Get-Command、Get-Process、Get-Service 和 Get-Eventlog)若要显示 cmdlet 的详细帮助,包括参数说明和示例,请使用 Get-Help 的 Detailed 参数。例如:
get-help get-command -detailed
若要仅查看示例,请使用 Examples 参数。例如,若要显示 Get-Command cmdlet 的示例,请键入:
get-help get-command -examples
若要仅查看详细的参数说明,请使用 Get-Help 的 Parameter 参数。可以指定参数的名称,或者使用通配符 (*) 指定所有参数。例如,若要查看 Get-Command 的 TotalCount 参数说明,请键入:
get-help get-command -parameter totalcount
若要查看 Get-Command cmdlet 的所有参数,请键入:
get-help get-command -parameter *
也可以使用调用 Get-Help 的 PowerShell函数之一。Help 函数一次显示一整屏帮助内容。Man 函数显示与 Unix 中的手册页类似的帮助。若要使用 Help 和 Man 函数显示 Get-Command cmdlet 的帮助,请键入:man get-command或help get-command