2017-06-30 8 views
-1

WMIを使用してローカル/リモートマシンに勝利サービスを作成しようとしていますが、Win32_Service.Createが私に返されます21 error codesと入力パラメータに何が問題なのかわかりません:Win32_Service.Createは常に21のエラーコードを返します

私はローカルマシンに、リモートにサービスをインストールしたいので、私は New-Serviceを使用することはできません
$connection = new-object System.Management.ConnectionOptions 
$connection.EnablePrivileges = $true 
$connection.Impersonation = "Impersonate" 

# at the moment I test creation on local machine 
$scope = new-object System.Management.ManagementScope("\\.\root\cimv2", $connection) 
$scope.Connect() 

$managment = new-object System.Management.ManagementClass(
    $scope, 
    (new-object System.Management.ManagementPath("Win32_Service")), 
    (new-object System.Management.ObjectGetOptions)) 

$params = $managment.GetMethodParameters("Create") 

$params["Name"] = "Test" 
$params["PathName"] = "C:\Users\User\test.exe" 
$params["ServiceType"] = 0x10 
$params["ErrorControl"] = 1 
$params["StartMode"] = "Automatic" 
# other params will be used by default 

# result is 21 
$result = $managment.InvokeMethod("Create", $params) 
# resultObj.ReturnValue is 21 
$resultObj = $managment.InvokeMethod("Create", $params, $null) 

。私はリモートマシン上の管理者権限を持っていないので、scは使用できませんが、scはローカルマシンで正常に動作します

入力パラメータに間違いがありますか?

+0

誰かがこのポストをdownvoteはなぜ? –

答えて

0

DisplayNameパラメータはemptyに設定することはできません。 だから、パラメータ細かい怒鳴る仕事です:

$params["Name"] = "Test" 
$params["DisplayName"] = "Diplay name" 
$params["PathName"] = "C:\Users\User\test.exe" 
$params["ServiceType"] = 0x10 
$params["ErrorControl"] = 1 
$params["StartMode"] = "Automatic" 
# other params will be used by default 
関連する問題