作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何为在 COM 对象中声明的枚举创建引用以传递给需要它的方法?具体来说,有一个方法SetHomeDir
在将枚举作为唯一参数的第 3 方 COM 对象上。参数期望的定义基本上是:
typedef enum
{
abFalse = 0,
abTrue = 1,
abInherited = -2
} SFTPAdvBool;
MX Error: 7
回复:
$obj.SetHomeDir($true)
$obj.SetHomeDir(1)
$obj.SetHomeDir([Object]1)
$obj.SetHomeDir([Int16]1)
Exception calling "SetHomeDir" with "1" argument(s): "MX Error: 7 (00000007)"
PS C:\> New-Object -ComObject SFTPCOMINTERFACELib.SFTPAdvBool
New-Object : Cannot load COM type SFTPCOMINTERFACELib.SFTPAdvBool.
PS C:\> [SFTPAdvBool]::abTrue
Unable to find type [SFTPAdvBool]:
make sure that the assembly containing this type is loaded.
PS C:\> [SFTPCOMINTERFACELib.SFTPAdvBool]::abTrue
Unable to find type [SFTPCOMINTERFACELib.SFTPAdvBool]:
make sure that the assembly containing this type is loaded.
PS C:\> $user.SetHomeDir
MemberType : Method
OverloadDefinitions : {void SetHomeDir (SFTPAdvBool)}
TypeNameOfValue : System.Management.Automation.PSMethod
Value : void SetHomeDir (SFTPAdvBool)
Name : SetHomeDir
IsInstance : True
最佳答案
我们最终在 COM 对象周围使用了一个已编译的 C# 互操作包装器。我能够指定一个 int
作为参数,并仅使用 case 语句从枚举中传递正确的值。据我所知,没有办法直接从 Powershell 执行此操作,并且需要将 COM 对象包装在托管代码中。
我们已经与 Globalscape 建立了一个对话,希望这将是他们在 future 版本中解决的问题。
关于powershell - 如何将自定义 COM 枚举指定为 PowerShell 方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37737314/
我是一名优秀的程序员,十分优秀!