类型安全的 powershell:无法找到类型“[应用程序]”

问题描述 投票:0回答:1

我正在尝试慢慢转向更类型安全的 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 | ~~~~~~~~~~~~~ |找不到类型[应用程序]。

纠正这个问题的正确方法是什么?

powershell
1个回答
0
投票

任何人都可以向我解释为什么在运行此脚本时出现以下错误:[

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()
© www.soinside.com 2019 - 2024. All rights reserved.