我正在尝试慢慢转向更类型安全的 powershell 脚本,因此尝试为所有变量显式设置类型。下面,我尝试实例化一个
Word.Application
对象,然后退出它:
using namespace Microsoft.Office.Interop.Word
using namespace System.Management.Automation
$ErrorActionPreference = [ActionPreference]::"Stop"
[Application]$wordApp = new-object -comobject Word.Application
$wordApp.Quit()
任何人都可以向我解释为什么在运行此脚本时出现以下错误:
无效操作:test.ps1:5 线路| 5 | [应用程序]$wordApp = new-object -comobject Word.Application | ~~~~~~~~~~~~~ |找不到类型[应用程序]。
纠正这个问题的正确方法是什么?
任何人都可以向我解释为什么在运行此脚本时出现以下错误:[
]?
Unable to find type
using namespace
语句仅仅是一种语法便利:它允许您通过简单的名称来引用已加载的类型,而不必使用命名空间部分(在当前的情况下,[Application]
而不是 [Microsoft.Office.Interop.Word.Application]
)
因此,您必须确保单独加载包含感兴趣类型的程序集,无论是通过
using assembly
语句还是Add-Type
调用。
因此:
# NOTE:
# Windows PowerShell only - doesn't work in PowerShell (Core) 7, as of v7.4.x
using assembly Microsoft.Office.Interop.Word
using namespace Microsoft.Office.Interop.Word
using namespace System.Management.Automation
$ErrorActionPreference = [ActionPreference]::Stop
[Application]$wordApp = new-object -comobject Word.Application
$wordApp.Name # Get and output the .Name property value, for demonstration purposes.
$wordApp.Quit()