PowerShell入门教程之访问.Net程序集、COM和WMI实例

所属分类: 脚本专栏 / PowerShell 阅读数: 2068
收藏 0 赞 0 分享

PowerShell可以设计的大而全,重新实现一切;也可以像现在一样设计成胶水语言,利用现有的资源。特别是,与.Net、COM和WMI三大豪门的联姻,使得PowerShell必将在Windows世界里大放光彩。

与新锐.Net联姻

  在Windows的世界里,.Net代表着现在和将来,是新生力量。与.Net联姻,就意味着榜上了粗腿,迈上了快车道。号称基于.Net Framework,那么使用.Net的基类就易如反掌。基本步骤如下:1、添加类所在程序集;2、创建类的实例;3、调用实例的函数或者属性。以StringBuilder类为例,代码如下:

复制代码 代码如下:

Add-Type -AssemblyName mscorlib

$str = New-Object System.Text.StringBuilder

$str.Append("Hello")

$str.ToString()

其结果是输出Hello字符串。

  其实最让人开心的,是PowerShell能够使用自定义的.Net类库。这意味着我们的产品或者工具都能在PowerShell中继续有效。基本步骤是:写一个类库,编译成DLL,导入到PowerShell会话中,然后所定义的函数和属性都可以使用了。示例如下:

首先写好代码,编译成DLL,假设路径是D:\PowerShellDemo\PowerShellDemo.dll。

复制代码 代码如下:

using System;

namespace PowerShellDemo
{
    public class PowerShellDemo
    {
        public void Greet()
        {
            Console.WriteLine("Hello!");
        }
    }
}

然后将其导入到PowerShell会话中,并使用其函数或者属性。

复制代码 代码如下:

Add-Type –Path “D:\PowerShellDemo\PowerShellDemo.dll”

$obj = New-Object PowerShellDemo.PowerShellDemo

$obj.Greet()

以上调用的输出是Hello字符串.

如此容易就能使用.Net的托管程序集,必然为它招徕一大票簇拥。

与贵族COM为伍

COM就像没落的贵族一样,虽然过气,但那个范儿还在。作为遗产,它们还在放光发热。PowerShell没有嫌弃它,而是选择与他们兼容。这也让现在依旧战斗在Native C++的程序员颇为欣慰。PowerShell对COM的访问方式是通过其ProgID来进行。示例如下:

复制代码 代码如下:

$ie = New-Object -ComObject InternetExplorer.Application

$ie.Visible = $true

$ie.Navigate(“www.bing.com”)

$ie.Quit()

以上这个示例演示了对IE的启动、显示、导航和退出等操作,非常简便。与COM的良好关系,也让PowerShell操作一些系统接口变得简单而其直接。这绝对是个加分的设计。

与实力派WMI结盟

  WMI是访问本机和域内标准资源的强大武器,接管了WMI的资源访问,PowerShell也从此迈入豪门。它没有做多余的工作,只是轻巧的通过几个WMIObejct命令,就拥有了WMI的一整套访问机制。对于域内其他机器的访问,甚至不用利用PowerShell的远程基础结构。访问WMI的示例如下:

复制代码 代码如下:

Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process

  这个命令的功能跟Get-Process一样,获取本机上正在运行的进程,只是它们得到的结果的形式有一点点小的区别。真正的区别在于当从远程计算机上获取进程信息时,Get-Process必须用Invoke-Command命令,在PowerShell远程基础结构下运行,而Get-WmiObject命令只需加上-ComputerName参数即可。这份从容,是从WMI娘家带来的。

  擅用WMI,必将大大提高访问本机和远程系统资源的效率。不管你信不信,反正我是信了!

结语

  不管是建立在.Net的基础上,还是兼容COM,再或者是以WMI的方式访问资源,PowerShell一心想成为多面胶,成为大众而非小众的朋友。作为IT人士的你,有没有别粘(电)到?

更多精彩内容其他人还在看

PowerShell遍历文件、文件夹的方法

这篇文章主要介绍了PowerShell遍历文件、文件夹的方法,本文使用Get-ChildItem命令实现,需要的朋友可以参考下
收藏 0 赞 0 分享

使用PowerShell操作Windows服务的命令小结

这篇文章主要介绍了使用PowerShell操作Windows服务的命令小结,本文只是做了一个命令列表,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中调用外部程序和进程操作命令例子

这篇文章主要介绍了PowerShell中调用外部程序和进程操作命令例子,给出了进程操作的一些命令和调用外部应用程序的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中正则表达式使用例子

这篇文章主要介绍了PowerShell中正则表达式使用例子,本文用实例来说明如何使用正则匹配到想要的内容,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell是什么?

这篇文章主要介绍了PowerShell是什么?本文解读了PowerShell的一些术语,对PowerShell做了一个完全介绍,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell直接脚本时出现无法加载文件因为禁止执行脚本

Powershell直接脚本时出现无法加载文件因为在此系统中禁止执行脚本,有关此问题的解决方法如下
收藏 0 赞 0 分享

Tornado中database模块被取消的替代方法

这篇文章主要介绍了Tornado中database模块被取消的替代方法,新的方法是使用torndb模块,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell学习笔记--使用正则表达式查找文件

本文介绍PowerShell中使用正则表达式的查找文件的方法,PowerShell的正则表达式与微软其它语言的正则表达式是一样的,使用非常方便。
收藏 0 赞 0 分享

Windows Powershell 介绍和安装

Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首。
收藏 0 赞 0 分享

Windows Powershell 自定义控制台

这篇文章主要介绍了Windows Powershell 自定义控制台,包括选项、字体、布局和颜色四个方面的自定义风格,希望对大家有所帮助
收藏 0 赞 0 分享
查看更多