• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PowerShell入门教程之访问.Net程序集、COM和WMI实例
    POST TIME:2021-10-18 15:40

    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 .Net获取电脑中的UUID
    • PowerShell中使用.NET将程序集加入全局程序集缓存
    • Powershell中可以使用的.Net实用静态方法
    • Powershell小技巧之查看安装的.Net framework版本信息
    • PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子
    • PowerShell中查看当前版本、Windows版本、.NET版本信息的代码
    • 一个ASP.Net下的WebShell实例
    • PowerShell 定时执行.Net(C#)程序的方法
    • ASP.NET下使用WScript.Shell执行命令
    • 如何使用 Shell 脚本执行 .NET Core 应用
    上一篇:PowerShell入门教程之函数、脚本、作用域介绍
    下一篇:PowerShell入门教程之创建和使用配置文件实例
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信