まず、質問を再投稿して申し訳ありません。バウンティを開始しようとしましたが、この問題が発生しており、修正されていないようです。
いずれかの方法
コード行を実行しようとすると、次のエラーが発生します
Start-Process : This command cannot be executed due to the error:
Access is denied.
これは実行されているコードです
$username = "domain\username"
$passwordPlainText = "password"
$password = ConvertTo-SecureString "$passwordPlainText" -asplaintext -force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $username,$password
$powershellArguments = "D:\path\ps.script.ps1", "arg1", "arg2", "arg3", "arg4"
Start-Process "powershell.exe" -credential $cred -ArgumentList $powershellArguments -wait
- このコードは、ローカルで実行すると正常に機能しますが、vbsWMIを介して呼び出された場合は機能しません。
- 両方のコンピューターが同じドメインとアドレス範囲に存在します
- 提供されたユーザー名とパスワードには、両方のマシンの管理者権限があります
- 私は両方を試してみましたが、
-wait
どちらも機能しません。ユーザーが特権を持っているため、それを維持したいと思います。
私はVBSに習熟していませんが、スクリプトを調べて、リモートコンピューターでコマンドを実行するために使用されるすべての行であると思われるものを引き出しました。このスクリプトは、他の何千ものタスクでエラーなしで機能します。
m_strCommand = MIGetTaskParam("RemoteProgName") & " " & MIGetTaskParam("Provider") & " " & FileTS
strScriptFolder = "C:\production\logs\RemoteExec"
strComputer=MIGetTaskParam("RemoteServer")
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objRemote = objSWbemLocator.ConnectServer(strComputer, "more\data", strUser, strPassword,"data", "moredata" )
Set objProcess = objRemote.Get("Win32_Process")
intReturnCode = objProcess.Create(m_strCommand, null, null, intProcessID)
Do Until i = 999
Set colProcesses = objRemote.ExecQuery ("SELECT * FROM Win32_Process " & "WHERE ProcessID=" & intProcessID )
If colProcesses.Count = 0 Then
Exit Do
End If
Loop