我已经使用 SCCM 2007 SDK 大约一周了,使用 C# 示例连接和运行我想要的命令没有问题。不幸的是,我试图从 Powershell 中运行我的 .Net DLL,一旦它到达 WglConnectionManager 对象的 .Connect 语句,我就会收到拒绝访问错误。
我做了很多研究,已经在远程机器上启用了 PSRemoting,并反编译了 wgladmin DLL 以确保将身份验证设置为 PacketPrivacy。我确信我缺少一些东西,虽然我已经使用 Powershell 将近一年了,但它主要是在本地系统上。
此连接是在我已经将所需的两个 DLL 导入命名空间之后。我收到的错误是:
Exception calling "Connect" with "3" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
At C:\Users\cnanda\Documents\WindowsPowerShell\Modules\Sccmpack\SCCMPack.PSM1:15 char:38
+ [void]$connection.Connect <<<< ("", "", "
");
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
SciSessionHandle :
ConnectionScope : System.Management.ManagementScope
QueryProcessor : Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine.WqlQueryProcessor
UniqueIdentifier : 4acb728e-1aeb-4493-a0a7-218f68bce2d9
MinVersion : 0
MaxVersion : 0
ExecuteQueryBatchSize : 50
AsyncQueryBatchSize : 50
ResultObjectsBatchSize : 1000
NamedValueDictionary : {}
UserDataObject :
Context :
这是连接代码:
$namedValues = New-Object Microsoft.ConfigurationManagement.ManagementProvider.SmsNamedValuesDictionary
$connection = New-Object Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine.WqlConnectionManager($namedValues)
[void]$connection.Connect("SERVERNAME", "USERNAME", "PASSWORD");