gpt4 book ai didi

powershell - Powershell:作为作业调用时,调用 “GetOwner”的异常: “Not found ”

转载 作者:行者123 更新时间:2023-12-03 01:20:06 27 4
gpt4 key购买 nike

我需要主人提供一些便利。我下面的演示脚本将首先在本地查找所有者的proc,然后执行相同的操作,但是会在同一框中调用命令:

cls
write-host 'LOCAL CALL: '
$procs = @(Get-WmiObject win32_process |? {($_.getowner().user -eq 'APP_ACCOUNT') })
write-host $procs.count

$func = {
$procs = @(Get-WmiObject win32_process |? {($_.getowner().user -eq 'APP_ACCOUNT') })
write-host $procs.count
}

write-host 'REMOTE CALL: '
$session = New-PSSession -ComputerName 'SERVER'
$job = Invoke-Command -Session $session -ScriptBlock $func -AsJob
Wait-Job -Job $job
$job | Receive-Job
$job | Remove-Job
Remove-PSSession -Session $session

在大多数情况下,当我运行脚本时,会出现以下输出错误:
LOCAL CALL:
38
REMOTE CALL:

Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
26 Job26 RemoteJob Completed True SERVER ...
Exception calling "GetOwner" : "Not found "
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
+ PSComputerName : SERVER

38

因此,第38个是它为本地运行的所有者找到的proc数。它也第二次找到38,但是调用getowner时出错。我不明白为什么,因为它是第一次工作。调用命令时,它是否以某种“气泡”形式运行?在我较大的脚本中,这会导致我遇到更严重的问题,因为作业状态会失败并且即使发生相同的错误,执行也会停止。一次有一个问题。

最佳答案

似乎我需要做更好的工作,以确保在所有者过滤之前,我的进程仍然存在:

    $procs = @()
$allProcs = @(Get-WmiObject win32_process)
foreach($proc in $allProcs)
{
$procActive = get-process -Id $proc.processId -ErrorAction SilentlyContinue
if($procActive)
{
if($proc.getowner().user -eq 'jdholbrook')
{
$procs += $proc
}
}
}
write-host $procs.count

关于powershell - Powershell:作为作业调用时,调用 “GetOwner”的异常: “Not found ”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com