I first want to apologize for reposting a question. I attempted to start a bounty but am having this problem and there doesn't seem to be a fix for it.
Anyways
I am getting the following error when trying to execute a line of code
Start-Process : This command cannot be executed due to the error:
Access is denied.
This is the code being executed
$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
- This code works fine when executed locally, but not when called via vbs WMI
- Both computers exist in the same domain and address range
- The username and password supplied have admin privileges on both machines
- I have tried both with and without
-wait
however neither works, and due to the user being privileged, I'd prefer to keep it
I am not proficient at VBS however I went through the script and pulled out what I believe to be all the lines that are used for executing a command on a remote computer. This script does work for thousands of other tasks without error.
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
For remote WMI in VBS, try setting ImpersonationLevel and AuthenticationLevel values:
Assuming your want to remotely execute a process, you could do something like the following where you're passing a computer IP to a WMIC command as opposed to using WMI in VBS:
Simply change the command you execute to whatever you want.