开发者

Get status of a process started by Invoke-WmiMethod

开发者 https://www.devze.com 2023-02-18 15:47 出处:网络
New to PowerShell, but loving the fact that I can do so much so quickly so far :) Anyways, I am starting a remote process in a PowerShell script thusly:

New to PowerShell, but loving the fact that I can do so much so quickly so far :)

Anyways, I am starting a remote process in a PowerShell script thusly:

$compname = "MY-PC"
$myinstallcmd = "c:\install\myprog.exe /s"
$proc = Invoke-WmiMethod -class Win32_Process -name Create -ArgumentList ($myinstallcmd) -ComputerName $compname

On most of the PCs I've tried, the Invoke-WmiMethod cmdlet works fine, but on one PC, it's hanging. What I'm now looking to do is get the status of the running process, and if it's hung up, kill it and log the kill, and then move on.

I did find a possible method to do this in the post Starting a process remotely in Powershell, getting %ERRORLEVEL% in Windows - however, when I try to do the Register-WmiEvent on the process $proc.ProcessId, I'm getting the dreaded 0x80070005 (E_ACCESSDENIED) error... I am running the PowerShell host as domain admin.

Can anyone please suggest a way that开发者_开发问答 I can get a status on the process I've started, and be able to take an action based on the status?

Thanks!


Update: I guess you are missing remote system credentials:

Try passing the credentials to remote system using -Credential parameter. This takes a PSCredential Object and hence you can do something like:

$cred = Get-Credential
Register-WMIEvent -Credential $cred <and other parameters here>

See if any of the following resolves the access denied error:

0x80070005 (DCOM ACCESS_DENIED) This error occurs when the connected user is not recognized or is restricted in some fashion by the remote server (for example, the user might be locked out). This happens most often when accounts are in different domains. Recent changes to WMI security can also cause this error to occur:

  • Blank passwords, formerly permitted, are not allowed in Windows XP and Windows Server 2003.

  • WMI does not allow asynchronous callbacks to a Windows 98 client. A call like SWbemServices.ExecNotificationQueryAsync from a Windows 98 computer to a Windows XP computer will result in an Access Denied error returned to the Windows 98 machine.

  • The DCOM configuration access setting might have been changed.

  • If the target computer is running Windows XP, the Forceguest value under the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa might be set to force the Guest account off (value is zero).

Source: http://technet.microsoft.com/en-us/library/ee692772.aspx

0

精彩评论

暂无评论...
验证码 换一张
取 消