SCCM 2007 SDK を使用して 1 週間ほど経ちましたが、C# の例を使用しても、必要なコマンドの接続と実行に問題はありませんでした。残念ながら、Powershell 内から .Net DLL を実行しようとしていますが、WglConnectionManager オブジェクトの .Connect ステートメントに到達するとすぐに、Access Denied エラーが発生します。
リモート マシンで PSRemoting を有効にし、wgladmin DLL を逆コンパイルして、Authentication が PacketPrivacy に設定されていることを確認するために、かなりの調査を行いました。何か足りないものがあると確信しています。私は Powershell をほぼ 1 年間使用していますが、ほとんどがローカル システムで使用されています。
この接続は、必要な 2 つの 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");