900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > PowerShell_零基础自学课程_9_高级主题:静态类和类的操作

PowerShell_零基础自学课程_9_高级主题:静态类和类的操作

时间:2021-03-19 05:36:08

相关推荐

PowerShell_零基础自学课程_9_高级主题:静态类和类的操作

哈哈,昨天弄了个ubuntu 11.10在虚拟机上运行,发现11.10界面非常绚丽,但是其需要的系统资源非常多,我虚拟机设定内存为512M,1个CPU4个核心,

进入以后发现根本动不了,因此今天我就下载了一个Fedora Core 4的版本来用,发现还是Redhat的东西熟悉啊。下面上张虚拟机的图片大家看看。

上次我们说到了,wmi对象和com组件,今天我们继续来看PS中对象的相关内容。主要说一下静态对象和对象的基本操作。

一、静态对象

在PS中有一类特殊的对象,我们不能同过这些类创建新的对象,这些类是不能更改状态的方法和属性的引用库。无法创建这些类,仅可以使用它。因为

不能创建、销毁或更改这些类和方法,因此也将这些类叫做静态类。

1、1 system.environment 静态类

在PS中经常用到的静态类有system.environmet类。例如我们可以在PS中查看这些类:

Exp:在PS中查看system.environment类

如上图所示,我们查看了system.environment,类的信息,可以看出来system.environment,继承于system.object类。 这里还有一点需要注意的

那就是引用静态类的时候,要用“[]”,表示引用的是静态类。

1、2 利用get-member函数是static参数获取静态类成员

我们可以通过get-member命令来查看静态类的成员。

Exp:查看静态类的成员

可以发现,这个通过get-member获取的类型是:system.runtimetype;与原来的类型不一致,这是为什么呢? 前面说过了,静态类与其他的类在行为和

方式上不同。在使用get-member命令获取静态类的信息的时候,需要附加-static参数。

Exp:

可以发现这里对象的类型变成了system.environmet. 还可以通过指定membertype参数来分类获取静态类的属性和方法。

命令分别为:

[system.environment] | get-member -membertype property # 获取属性

[system.environment] | get-member -membertype method # 获取方法

我们试一下是否可以用new-object创建静态对象。

Exp:

可以发现,静态类没有构造函数,因此静态函数仅仅是一个库,可以使用的库,不能通过它来派生新的的类和构造类的对象。

1、3 引用静态类的成员

在PS中通过全局引用符 " :: "来引用静态类的成员。

Exp:

如图所示,我们利用commandline获取了PS的安装路径。还可以通过OsVersion属性获取系统的版本信息

Exp:

1、4 system.math 类进行数学运算

在PS中还提供了另外一个静态类, system.math. 同样可以通过get-member命令获取system的成员。

Exp:

这些方法可以实现一定的数学运算功能,上面的帮助信息已经给出了函数的定义。举个例子:

Abs Method static System.SByte Abs(System.SByte value), static System....

上面的命令可以获取一个实数的绝对值,其用法如下: [system.math]::abs(x);

2、 管道对象管理

执行cmdlet时,在管道中传递的对象比我们实际需要的要多,而且有时候我们并不需要关注这么多的对象,那么我们是否可以对这些对象进行一下

筛选呢?

在PS中我们可以使用where-object命令进行筛选。

2、1 where-object命令

利用where-object命令可以逐一的测试管道中传递的对象,并将符合筛选条件的对象在管道中进行传递,而将不符合条件的对象从管道中删除;实现

这一功能需要使用where-object的FilterScript表达式特性。

FiltrScript表达式为返回值为true或者false的脚本块; 脚本块是有{} 括起来的一个或者多个PS命令,这些脚本简单而功能强大。使用这些脚本需要

使用PS提供的另外一个特性:比较运算符。

在PS中,比较运算符不区分大小写,因为在PS中 小于(<)、大于(>) 、等于(=)因为有特殊的用途,因此用字母token表示。基本的运算符有:

比较运算符 含义 实例(返回TRUE)

-eq 等于 1 –eq 1

-ne 不等于 1 –ne 2

-lt 小于 1 –lt 2

-le 小于或等于 1 –le 2

-gt 大于 2 –gt 1

-ge 大于等于 2 –ge 1

-like 类似需要用 "file.doc" -like "f*.do?"

文本通配符

-notlike 不类似 "file.doc" -notlike "p*.doc"

-contains 包含 1,2,3 -contains 1

-notcontains 不包含 1,2,3 -notcontains 4

在PS中为了遍历管道中的对象,提供了一个预置的变量: $_ ;通过这个对象可以遍历管道中传递的对象。

Exp: 利用FilterScript进行筛选

我们还可以根据对象的属性进行筛选。例如我们要查看WMI中win32_systemdriver类,在系统中可能有几百个这样的系统驱动程序,而我们可能

只对其中的一部分感兴趣,这样我们就可以通过FilterScript来获取我们感兴趣的驱动类。

Exp: 利用FilterScript表达式获取win32_systemdriver中正在运行的类

我们还可以通过这样的方式,获取启动模式为手动的驱动程序:

如果我们需要同时获取“正在运行”而且是启动模式为“手动启动”的驱动程序我们怎么办呢?方法1是组合管道命令,如下所示:

这样做的话,输入的命令太长,在Ps中还提供了一套逻辑运算的机制,使用逻辑运算机制就可以使前面的命令变短.

Exp:

PS中的逻辑运算符有: -and、 -or、-not 、!; 分别是与、或、非(其中 ! 也是表示非)。

三、小结

在PS中通过使用这些特性,就可以编写复杂的管理程序了。

第一次用LiveWrite,感觉与网页的方式区别挺大的,首先是Tab键没有很好的支持,再次就是贴代码不是很方便,需要改进。

而且排好的格式,传上来后有点不一致。

待续………..

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。