Power Shell 学习笔记(二)所谓对象

来源:互联网 发布:python echarts 编辑:程序博客网 时间:2024/05/21 15:09

处理对象

虽然您最初可能没有意识到,但是在 Windows PowerShell 中工作时,所使用的是 .NET 对象。随着您经验的增加,对象处理能力变得更明显,而且您发现自己使用的是对象,甚至用对象进行思考。

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

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

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

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

get-service | get-member

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

image

若要获取有关对象类的信息,请在 MSDN 中复制并粘贴类型名称,如 System.ServiceProcess.ServiceController。找到类后,可以阅读 MSDN 副主题,以了解基于该类的对象(如 Windows PowerShell 中的对象)的属性和方法。

批注:

其实仔细观察一下,就可以猜到他的处理思想。其实每一个cmdlet(Get)获取到得信息都是通过一个.net的Object对象形式返回的。你可以理解为,我们在用ps的脚本写cs的代码。只不过程序不需要编译。ps的处理思想就是基于对象这样一种方式。首先,得到对象,然后通过(Property,不需要我解释了吧)设置对象,通过(Method)操作对象。Get-member是一个很有用的方法,当你获取到一个对象,不知道可以对他进行什么操作的时候,试着用一下他好了。我一般记不住这么多属性和方法的,多数都是想好思路,然后调试一下脚本。

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

get-service schedule | format-list -property *

以下显示一个结果示例。

image

批注:

首先获取到 schedule这个Service的对象,然后设置一下输出的List的Format,格式为只显示Property(和它的值)。

最初学习 Windows PowerShell 时,无需了解有关对象的任何信息,但是要意识到该概念。您将很快能够充分利用对象。

 

了解对象:Get-Member

Get-Member 是最有用的 cmdlet 之一,它显示有关命令返回的 .NET 对象的信息。该信息包括对象的类型、属性和方法。

若要使用 Get-Member,请使用管道运算符 (|) 将命令结果发送到 Get-Member。例如:

get-service | get-member

此命令显示 Get-Service 实际上返回了一组 System.ServiceProcess.ServiceController 对象 -- 计算机上的每个服务都有一个对象。

image

此信息看起来技术性很强,但是它实际上非常实用。

· 通过类型名称(如“System.ServiceProcess.ServiceController”)可以知道 cmdlet 返回什么类型的 .NET 对象。若要获取有关此 .NET 类中对象的信息,请将类型名称粘贴在 MSDN 上的“Search”(搜索)文本框中。关联的 MSDN 主题包括有关此类中对象的属性和方法的信息,其中包括 Get-Service 返回的对象。

· Property 类型表示对象的属性。每个属性的值是有关服务对象的信息。例如,ServiceController 对象具有 CanPauseAndContinue 属性。该属性的 MSDN 说明解释,该属性指示是否可以暂停和恢复服务。

若要列出特定服务的属性值请键入:

(get-service <服务名称>).<属性名称>

例如:

(get-service MSSQLServer).canpauseandcontinue

image

若要显示 MSSQLServer 服务的 CanPauseAndContinue 属性的名称和值列表,请键入:

get-service MSSQLServer| format-list -property name, CanPauseAndContinue

image

若要显示 MSSQLServer 服务的所有属性值的列表,请键入:

get-service MSSQLServer | format-list -property *

image

若要显示所有服务的 CanPauseAndContinue 属性的名称和值表,请键入:

get-service | format-table -property name, CanPauseAndContinue

image

· Method 类型表示对象的方法,即可以对对象执行的操作。例如,ServiceController 对象具有 Stop 方法,使用该方法可以停止服务。

若要调用服务对象的方法,请使用以下格式。(务必包括圆括号)。

(get-service <服务名称>).<方法名称>()

(get-service MSSQLServer ).stop()

image

image

同理

(get-service MSSQLServer ).start()

image

有关 Get-Member 命令的信息,请键入:

get-help get-member -detailed。

如果熟悉.net编程的人员的话,很容易上手吧。

原创粉丝点击