学习 PowerShell – 创建 COM 组件


以前听过 Powershell 但是也没有去仔细关注. 最近同事在尝试用 batch 批处理写一个 服务端自动编译脚本 (AutoBuild) 时遇到一此很奇怪不能解释的现象之后 果断用了 PowerShell 然后我就发现 Powershell 的确比较适合做这一类的任务. 首先语法强大, 是一种完整的编程语言, 而不像批处理 (*.bat) 弄一个循环都得借助很难用的 for 命令. 在批处理里, 语法不灵活, 很死板, 特别是 if 命令. 在 Powershell 里, 有函数的概念, 而在 批处理里, 只能通过 call :label (标号跳转) 的方式来模拟函数的实现.

当然也可以通过 VBScript for Windows Script Host (WSH) 来写脚本, VBScript 也是一门完整的语言, 但是本身命令支持的比较少, 而且需要通过 cscript.exewscript.exe 来解释, 性能比较低. 动不动就得通过 CreateObject 命令来调用外部COM程序. 连运行一个外部命令都得这样 (e.g. WScript.Shell 对象有一个 Run 方法)

在 PowerShell 里, 可以调用 .NET 库, 也可以很简单的创建 COM 对象, 比如以下两行就可以实现:

<#
    Example: Create COM object in PowerShell
    https://HelloACM.com
#>

# create COM object WScript.Shell
$WSH = New-Object -ComObject "WScript.Shell"
$WSH.Popup("Hello from PowerShell!")

和其它语言类似, 单行注释用#符号 多行注释则用 <# . #>. 而多行注释在批处理和VBScript 里是没有的.

创建一个函数也很简单快捷:

<#
    Example: Create COM object in PowerShell
    https://HelloACM.com
#>

function sayHello($msg) {
    $WSH = New-Object -ComObject "WScript.Shell"
    $WSH.Popup("Hello $msg")
}

sayHello("Zhihua!")

可以直接和PHP一样, 把参数放在双引号里而不用字符串联接. 如果用了单引号, 字符串里的变量值就不会被取代. 但可以通过加号来实现字符串相联.比如:

function sayHello($msg) {
    $WSH = New-Object -ComObject "WScript.Shell"
    $WSH.Popup("Hello " + $msg)  # 这里用单引号也是可以的
}

英文: https://helloacm.com/powershell-tutorial-create-com-object/

GD Star Rating
loading...
本文一共 399 个汉字, 你数一下对不对.
学习 PowerShell – 创建 COM 组件. (AMP 移动加速版本)
上一篇: Chrome 浏览器上的快速标签链接
下一篇: 初步使用 Resharper (Visual Studio 插件)

扫描二维码,分享本文到微信朋友圈
473e08d43c2d7560b0e257e1f9916fea 学习 PowerShell - 创建 COM 组件 学习笔记 技术 程序设计

评论