PowerShell面向对象编程基础知识总结

 更新时间:2014年08月04日 09:25:06   作者:洪哥  
这篇文章主要介绍了PowerShell面向对象编程基础知识总结,本文着重讲解面向对象的一些概念,又给出了Get-Member命令输出类的属性和方法的例子,需要的朋友可以参考下

本文介绍PowerShell面向对象编程的基础知识,我们知道PowerShell里面的所有变量和输出都是对象,所以有必要在进行PowerShell编程时了解一下面向对象编程的基础知识。

面向对象编程的引入主要是为了解决软件复杂化带来的维护等问题,早在20世纪60年代,面向对象就已经出现了。虽然C语言并不支持面向对象的特性,但是使用C语言进行开发的程序人员已经将面向对象的核心思想应用到其中,因此我们更应该理解的是面向对象的思想,而不需要纠缠于语言本身。

PowerShell是基于对象的脚本语言,因此下面的介绍中我们主要侧重于介绍基本概念,并不会涉及如何进行面向对象编程。通过下面知识的学习,你将会了解PowerShell中需要掌握的基本对象知识,从而深刻理解PowerShell采用基于对象的管理带来的优势。

类(Class)

为物体(或者说是对象)定义的抽象特性,这些特性包括物体的特征(它的属性、域或特性)以及物体的行为(它可以做得事情、方法或操作)。某些人会说类就像是设计图或工厂一样,用来描述某些事物的自然特性。打个比方来说,狗这个类可能包含所有狗包含的共性,例如:品种和皮毛颜色(它们都是狗的特征)、叫和坐下(它们都是狗的行为)。

对象(Object)

类的特定实例(Instance)。解释很抽象?对象可以看做是你家的狗,或者你家邻居的狗。无论如何,它们都是狗类的实例。狗类定义一部分所有狗都具有的特性,例如:三条(显然狗主人很喜欢打麻将)是一只真实存在的狗,狗类中的信息就可以用来描述三条与其他狗的不同,三条的皮毛是棕色的。我们可以知道三条被归类为犬科,是狗类的一个实例。

方法(Method)

对象的能力。三条是一条狗,它能够叫,因此叫就是三条的方法。三条也许还有其他的方法,例如:原地转圈、作揖、坐下等等。

继承 (Inheritance)

子类是一个类的特殊版本,它继承父类的属性和行为,并引入自己特有的属性和行为。

我们还是回到前面的例子讨论,狗按照品种划分有很多种,例如:黄金牧羊犬、柯利牧羊犬和吉娃娃。三条是柯利牧羊犬的实例,例如狗类中已经定了了方法叫和属性皮毛颜色。所以每一个狗类的子类都可以直接继承这些信息,不需要额外重新定义这些冗余的信息。

子类可以改变继承的特性。例如:柯利牧羊犬可能指定默认的皮毛颜色为棕色和白色。而吉娃娃子类可能默认指定方法“叫”是产生高音调的叫声。子类还允许引入新成员,例如吉娃娃子类可能引入方法“颤抖”(吉娃娃的胆子很小,所以遇到危险就会颤抖)。吉娃娃对象还有一个颤抖的方法,但是三条没有,这是因为三条是柯利牧羊犬,而不是吉娃娃。

对于类和对象而言,我们在PowerShell开发时,更多的关注它的成员,即类的属性和方法。PowerShell中的类和C#一样,有静态成员和实例成员两种。下面分别演示一下:

我们可以通过Get-Member的Static参数来列出类型的静态成员:

复制代码 代码如下:

PS C:\user\splaybow> [int] | Get-Member -Static | Out-String -Width 80

   TypeName: System.Int32

Name            MemberType Definition
----            ---------- ----------
Equals          Method     static System.Boolean Equals(Object objA, Object o...
Parse           Method     static System.Int32 Parse(String s), static System...
ReferenceEquals Method     static System.Boolean ReferenceEquals(Object objA,...
TryParse        Method     static System.Boolean TryParse(String s, Int32& re...
MaxValue        Property   static System.Int32 MaxValue {get;}
MinValue        Property   static System.Int32 MinValue {get;}

我们可以看到,System.Int32上有MaxValue和MinValue两个静态属性,它们指示了System.Int32类型的值域:

复制代码 代码如下:

PS C:\Users\splaybow> [int]::MaxValue
2147483647
PS C:\Users\splaybow> [int]::MinValue
-2147483648

如果没有指定Static参数,那么Get-Member会显示对象的实例方法:
复制代码 代码如下:

PS C:\Users\splaybow> [int]::MinValue | Get-Member | Out-String -Width 80

   TypeName: System.Int32

Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     System.Int32 CompareTo(Int32 value), System.Int32 Comp...
Equals      Method     System.Boolean Equals(Object obj), System.Boolean Equa...
GetHashCode Method     System.Int32 GetHashCode()
GetType     Method     System.Type GetType()
GetTypeCode Method     System.TypeCode GetTypeCode()
ToString    Method     System.String ToString(), System.String ToString(IForm...

关于PowerShell面向对象编程基础知识,本文就介绍这么多,希望对您有所帮助,谢谢!

相关文章

  • PowerShell中使用Filter来创建管道输入函数

    PowerShell中使用Filter来创建管道输入函数

    这篇文章主要介绍了PowerShell中使用Filter来创建管道输入函数,Filter创建的函数跟Function创建的函数,在本质上是一样的,需要的朋友可以参考下
    2014-07-07
  • Windows Powershell属性:描述对象是什么

    Windows Powershell属性:描述对象是什么

    既然上文说明了对象=属性+方法,那么本文我们就先来探讨下属性。先从属性的概念入手,接着通过属性中包含对象、只读属性和读写属性、属性的类型、查看所有属性这4个方面详细向我们展示了对象。有需要的朋友展示下
    2014-09-09
  • Windows Powershell 变量的幕后管理

    Windows Powershell 变量的幕后管理

    如果在Powershell中输出一个变量,只会输出这个变量的值。不能够显示它的其它信息,如果想查看一个变量的其它保留信息,就需要变量的基类PSVariable对象,这个可以通过Get-Variable命令得到
    2014-09-09
  • Powershell Profiles配置文件的存放位置介绍

    Powershell Profiles配置文件的存放位置介绍

    这篇文章主要介绍了Powershell Profiles配置文件的存放位置介绍,Profiles文件存放的位置不同,它的作用域也会不同,需要的朋友可以参考下
    2014-08-08
  • Windows Powershell 变量的类型和强类型

    Windows Powershell 变量的类型和强类型

    这篇文章主要介绍了Windows Powershell 变量的类型和强类型,以及使用示例,需要的朋友可以参考下
    2014-09-09
  • Powershell实现监测服务器连通状态

    Powershell实现监测服务器连通状态

    这篇文章主要介绍了Powershell实现监测服务器连通状态,代码很简单,本文直接给出实现代码,需要的朋友可以参考下
    2015-05-05
  • PowerShell入门教程之PowerShell和Cmd命令行的关系?

    PowerShell入门教程之PowerShell和Cmd命令行的关系?

    这篇文章主要介绍了PowerShell入门教程之PowerShell和Cmd命令行的关系?本文讲解了PowerShell中的CMD命令、PowerShell与Cmd命令行的关系、Cmd命令行会被PowerShell替代吗等内容,需要的朋友可以参考下
    2014-10-10
  • PowerShell小技巧之获取域名whois信息

    PowerShell小技巧之获取域名whois信息

    平常我们要查询whois信息都是通过godaddy、name.com、万网、新网等域名注册商网站通过查询页面提交域名进行查询,既慢又不能批量查询,太费劲了,这里我就把我珍藏很久的一个PS function贡献给大家,这个脚本支持140多种后缀的域名进行查询。
    2014-10-10
  • PowerShell批量修改AD用户密码属性的代码

    PowerShell批量修改AD用户密码属性的代码

    这篇文章主要介绍了PowerShell批量修改AD用户密码属性的代码,需要的朋友可以参考下
    2015-07-07
  • PowerShell中终止管道的方法

    PowerShell中终止管道的方法

    这篇文章主要介绍了PowerShell中终止管道的方法,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05

最新评论