내가 원격 WMI (refer this) 를 사용하여 대화 형 프로세스를 시작하고
WMI를 사용하여 대화식 프로세스를 원격으로 시작하는 방법?
Const INTERVAL = "n"
Const MINUTES = 1
strComputer = "machineDomain"
strCommand = "Notepad.exe"
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objScheduledJob = objWMIService.Get("Win32_ScheduledJob")
Set objSWbemDateTime = _
CreateObject("WbemScripting.SWbemDateTime")
objSWbemDateTime.SetVarDate(DateAdd(INTERVAL, _
MINUTES, Now()))
intReturnValue = objScheduledJob.Create(strCommand, _
objSWbemDateTime.Value, False, 0, 0, True, intJobID)
WScript.Echo "Job ID: " & intJobID
문제는 위의 코드에서 현재 시간 9시 30 분 오전 다음의 경우 다음 분으로 예약 할 작업이 [의미입니다 그것은 9시 31 분] 예정이지만, 나는 단지 현재 시간 이후 5 초 작업을 예약하고 싶습니다. 나는 다음 줄을 수정 :
Const INTERVAL = "s"
Const SECONDS = 5
하지만이 제대로 작동하지 않습니다 :
Const INTERVAL = "n"
Const MINUTES = 1
사람 :
에서. 나는 우리가 SetVarDate(DateAdd(INTERVAL, _ SECONDS, Now()))
라고 부를 때 문제가 있다고 생각한다. 현재 시간은 오전 9시 30 분 20 초, 오전 9시 30 분 25 초, 오후 9시 30 분 57 초라는 것처럼 추가된다. 그러면 문제가 생깁니다.
누구든지 나를이 문제를 해결하는 데 도움이 될 수 있습니까?
미리 감사드립니다.
편집 :
내가 다음 코드 [^]을 사용하고있는 위의 VBScript 코드를 호출하는 경우 : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
:
string remoteMachine = Console.ReadLine();
string sBatFile = string.Empty;
if (remoteMachine != string.Empty)
sBatFile = @"\\" + remoteMachine + "\\admin$\\process.bat";
else
Console.WriteLine("Invalid Machine name");
if (File.Exists(sBatFile))
File.Delete(sBatFile);
StreamWriter sw = new StreamWriter(sBatFile);
string _cmd = "DIR > \\\\" + remoteMachine + "\\admin$\\output.txt";
Console.Write("Enter the remote Command <eg : Notepad.exe, Dir, Shutdown - r, etc..> : ");
_cmd = Console.ReadLine();
if (_cmd.Trim()==string.Empty)
Console.WriteLine("No command entered using default command for test :" + _cmd);
sw.WriteLine(_cmd);
sw.Close();
ConnectionOptions connOptions = new ConnectionOptions();
connOptions.Impersonation = ImpersonationLevel.Impersonate;
connOptions.EnablePrivileges = true;
ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", remoteMachine), connOptions);
manScope.Connect();
ObjectGetOptions objectGetOptions = new ObjectGetOptions();
ManagementPath managementPath = new ManagementPath("Win32_Process");
ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions);
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
inParams["CommandLine"] = sBatFile;
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
Console.WriteLine("Creation of the process returned: " + outParams["returnValue"]);
Console.WriteLine("Process ID: " + outParams["processId"]);
그것이 잘 작동하지만, 일부는 예외를주고 시작하려고 후.
이 문제를 해결하는 방법은 무엇입니까?
당신은 objItem.Hour 난 그냥 지금이 몰래 해요 0과 동일 할 때, 한밤중에 작동하는지 확인하기 위해이 코드를 확인 할 수 할 수 있습니다. – langstrom