【发布时间】:2017-09-25 14:53:31
【问题描述】:
我在下面有以下 Powershell 代码,我已将其编译为可执行 (.exe) 文件,并将其打包到 SCCM 中以针对 100 个用户进行推送。我已将 SCCM 包设置为以“以用户身份安装”和 not 以管理员身份运行。该软件包成功地为使用 Windows 7 的用户捕获数据,但任何安装了 Windows 8/10 的用户未能捕获我需要的数据。
我做了一个 try/catch 语句并得到了这个错误 - "
使用“1”参数调用“GetActiveObject”的异常:“操作 不可用(来自 HRESULT 的异常:0x800401E3 (MK_E_UNAVAILABLE))"
我试图理解为什么相同的代码可以在 Windows 7 机器上完美运行,但在 Windows 8/10 上却无法运行。有解决办法吗?我想避免使用“New-Object -ComObject 'Outlook.Application'”,因为我不想在后台创建一个新的 Outlook 进程(害怕破坏用户正在运行的 Outlook 会话)。我需要运行 Powershell 代码来捕获活动的 running Outlook 进程。请帮忙。谢谢
$mail = [Runtime.Interopservices.Marshal]::GetActiveObject('Outlook.Application')
$name = $mail.Application.DefaultProfileName
$name 的输出存储在本地的日志文本文件中。
【问题讨论】:
-
在项目中我想知道您是否需要将其从
AnyCPU更改为 x86 或反之亦然`这听起来像是 32 位操作系统与 64 位操作系统的操作系统问题 -
我们所有的机器都是64位操作系统,我们不部署32位机器。谢谢
-
如何检查 DLL 的
CopyLocal =属性是否确保在部署时将其设置为 true。 -
MethodMan,感谢您的回复。不熟悉 DLL 的这个“copylocal=”属性。你能详细说明一下我应该如何确保它设置为“true”吗?
-
在项目的
references节点中,如果您使用任何第3 方程序集的/dll,只需单击引用节点中的dll 并将该属性从CopyLocal=false更改为CopyLocal=true这会将 dll 复制到项目的 Bin 目录,而不是在查找/和/或引用 dll 时依赖GAC..
标签: c# vba powershell outlook sccm