我们之前有一篇文章写过如何获取对象的信息,但是从没有说过如何创建一个PowerShell对象。正巧也看到很多刚学PowerShell的朋友问起这个问题,今天就来说一说如何创建PowerShell对象。

从抽象层面来说,在PowerShell里哪怕我们定义一个普通变量也已经是创建了一个对象。那么确切的说我们现在是想创建一个实例对象和COM对象。

在PowerShell里创建对象可以使用New-Object cmdlet来创建一个初始对象,要知道怎么用,还记得我们从零开始学PowerShell 系列开篇提到的吗?不知道怎么用就用Get-Help看看。

可以从给出的使用语法看出,New-Object大致可以创建两种方式的对象,一种是基于.NET Framework的实例类对象,另一种则是基于COM对象的。所以,我们就分别来看看如何创建这两种对象。

.NET Framework我想不必多说,微软自家的大基石Windows类框架库,我们的PowerShell底层就是构建于此。所以PowerShell自然也能做到调用.NET Framework中的类库,而因为.NET提供了庞大的数据类库,所以我们就可以使用PowerShell去做到一些PowerShell目前还没有提供的功能。

比如我们想创建一个日期类库怎么做呢?可以像下面这样去新建一个日期实例对象。

这里我们配合了使用了两个参数TypeNameArgumentListTypeName是用于指定你基于哪个.NET Framework来创建实例对象,而ArgumentList可以未必每次都指定,这取决于我们的类函数是否每次生成实例对象时对有必要传参数。

有人可能要问,你怎么知道要传哪些参数呢?那是因为我去微软的MSDN查DateTime Structure类的信息,DateTime的构造函数提供了好几种参数构造方法,于是我选择了新建实例对象时,顺便初始化,年月日时分秒数据对象。

最后$DateTime就是所创建的对象了,我们输出这个对象可以看到我们之前传递的日期信息。

不过,你是否还记得我们之前有篇文章提到如何获取对象里的信息吗?没错,就是使用Get-Membercmdlet来查看对象含有哪些数据信息。

我们在这里发现有一个AddDays方法挺有意思,我们直接使用,并传入一个参数10看看。它可以很方便的让我们知道之前的日期往后推10天是什么日期。

接下来要说的是以创建COM组件的方式创建一个对象,可能有人不是很清楚什么是COM组件,简单的说在早期各种产品,软件里有许许多多组件,但是很多功能组件安装卸载变的麻烦。为此就出现了COM组件,就像乐高积木一样,人们就可以开发COM组件像接口一样与各种组件按照需要组合成一个功能完善的软件。

下面我摘了一段百度百科给需要了解的人:

COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。

创建COM实例对象和之前创建基于.NET Framework的方式基本差不多,我们来快速用基于COM组件的方式创建一个实例对象,这里我们只需要配合 COMObject参数指定专门的COM 对象(注:在我们创建新对象的时候TypeName参数是不能和COMObject同时混用的)。

我们用Get-Member查看对象信息后打算使用IsServiceRunning方法,这个方法是用来查看当前要查看的某个服务是否还在运行中。

PowerShell的强大也正是因为构建于背后强大的类型模型框架,因此我们可以借助.NET Framework或者COM组件对象来完成PowerShell暂时还无法完成的功能。

从零开始学PowerShell(9)创建PowerShell对象相关推荐

  1. 从零开始学习ThingJS之创建App对象

    1. 创建App 2. 加载场景 3. 加载地图 在数字孪生可视化行业,搭建模型以及3D场景都是让人头疼的事,但是有一个平台解决了这些难题,它就是ThingJS.作为面向物联网的3D可视化开发平台其特 ...

  2. 从零开始学android开发-创建第一个android项目

    打开ADT开发工具 [file]-[new]-[android application project] 填写application name ,project name,package name,点 ...

  3. PowerShell:如何用PowerShell创建WinForm窗体?-在PowerShell中使用GUI界面

    从印度小哥那里受到启发,PowerShell不止可以做批处理,自动化.还能做界面做GUI,也能实现很好的交互.因为PowerShell是可以和.Net 程序无缝集成的.所以.Net能用的东西在Powe ...

  4. 从零开始学PowerShell(1)初见基础命令

    PowerShell在设计之初就考虑到易用性,因为我们的运维系统管理人员实在是太忙碌了,所以你可以从它的每个标准的命令名上就大致能猜出这个命令是做什么的,从他的命名结构也可以发现均按照"动词 ...

  5. 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养

    初学记录 · 欢迎交流 区块链DApp从零开始学 (一) | DApp抓包 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养 区块链知识 (一) | 实例 ...

  6. 从零开始学前端 - 16. JS对象Object介绍及常用方法

    作者: 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 微信公众号:老王的前端分享 每篇文章纯属个人经验观点,如有错误疏漏欢迎指正.转载请附带作者信息 ...

  7. 从零开始学前端:json对象,对象的序列化和反序列化 --- 今天你学习了吗?(JS:Day15)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:字符串.数组的方法 - 今天你学习了吗?(JS:Day12/13/14) 文章目录 从零开始学前端:程序猿小 ...

  8. xenserver 虚拟机扩容lvm磁盘分区的方法_从零开始学Linux运维|35.LVM(逻辑卷管理)的创建...

    简单来说 LVM是建立在硬盘和分区之上的一个逻辑层,提高磁盘分区管理的灵活性 如果没有使用LVM,我们直接访问文件系统读取硬盘内容 使用了LVM我们是通过逻辑卷的东西来读取硬盘内容 使用LVM增加一个 ...

  9. PowerShell~文件操作和对象遍历

    ps提供了丰富的文件操作,如建立,删除,改名,移动,复制,文件夹建立,显示文件列表,同时对数组对象的遍历也很方便,如果在使用PS脚本时,希望现时传入参数,可以把参数声明为param,当然需要把它写在文 ...

最新文章

  1. 多线程Java Socket编程示例
  2. angular 兼容ie7 bootstrap2兼容ie6
  3. urllib.parse
  4. 左耳朵耗子:谈谈Go语言、Docker和新技术
  5. 自学机器学习、深度学习、人工智能的学习资源集合
  6. postman下载教程linux,linux 安装postman
  7. .NET Core开发实战(第15课:选项框架:服务组件集成配置的最佳实践)--学习笔记...
  8. 使用VS Code开发 调试.NET Core 应用程序
  9. C++ 写时拷贝 2
  10. Linux 笔记 - 第九章 Linux 中软件的安装
  11. 基于DDD的golang实现
  12. 1.极限——例子_2
  13. 【懒人有道】在asp.net core中实现程序集注入
  14. python取消任务的方法_python里取消一个未曾执行的任务
  15. 维护删除订单后,清空安装和售后信息;条码打印软件补充打印问题
  16. zabbix利用sendEmail邮件报警
  17. 一个基于QT的开源串口调试工具
  18. Linux查看占用内存的进程
  19. 2018你那计算机考试新题型,2018年421多省公务员考试判断推理新题型、新趋势
  20. JAVA -- 正则表达式高级学习技巧

热门文章

  1. 送书 | 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
  2. 代码分析 | 单细胞转录组clustering详解
  3. xming+putty在windows下远程linux主机图形界面程序及putty乱码解决
  4. P5726 【深基4.习9】打分(python3实现)
  5. IDA笔记-IDA Pro基本使用
  6. C++远程dll注入到QQ聊天工具
  7. linux系统月初月末,Linux last显示系统开机以来获是从每月初登入者的讯息命令详解...
  8. c 修改mysql数据库_c 修改mysql数据库
  9. 讯飞输入法pad版x86_观察:不惧腾讯、阿里,科大讯飞推出在线文档App“讯飞文档”...
  10. python静态变量_python静态变量