You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本无法扫描进程且未进入二级循环问题求助

PowerShell脚本排查:读取PC列表检查远程进程失败问题

问题现象

脚本从CSV读取PC列表后,仅输出"Looking for process..."提示,未进入进程检查的第二个foreach循环,无后续日志或结果输出。

核心问题与修复点

  • 未远程获取目标PC进程:原脚本中get-process默认读取本地进程,而非CSV指定的远程PC进程。若本地无nscp.exe,$Processes会为空,自然无法进入循环。需改用远程进程查询方式。
  • 变量名拼写错误:Import-Csv $ipmCsvLocation中的变量名应为$CsvLocation(与前面定义的变量一致),虽当前输出显示循环了PC列表,但该错误可能导致后续运行异常。
  • 进程名称判断逻辑错误:Get-Process返回的ProcessName不含.exe后缀,nscp.exe的实际ProcessName是nscp,原脚本中$Proc.ProcessName -eq $IcingaProc(值为nscp.exe)永远不成立。
  • 日志换行写法错误:LogWrite rn会将转义字符作为字符串写入日志,应利用Add-Content的默认换行特性,或直接在日志内容中添加分隔符。

修正后的脚本

Function LogWrite {
    Param ([string]$logstring)
    # 自动添加换行,无需手动处理转义字符
    Add-content $Logfile -value "$(Get-Date -Format yyyyMMdd-HHmmss) - $logstring"
}

$LogFile = "Path\to\log.txt" # 本地日志文件路径
$CsvLocation = "\\path\to\CSV\File\Table.csv" # CSV文件路径
$csvdata = Import-Csv $CsvLocation # 修正变量名拼写错误

foreach($pc in $csvdata) {
    $targetProcExe = "nscp.exe"
    $pcname = $pc.Name
    Write-Host "Looking for process $targetProcExe in $pcname..."

    try {
        # 远程查询目标PC进程,Get-CimInstance兼容性更强(依赖WMI服务)
        $Processes = Get-CimInstance -ClassName Win32_Process -ComputerName $pcname -ErrorAction Stop | 
                     Where-Object {$_.Name -eq $targetProcExe}
        
        if ($Processes) {
            Write-Host "$targetProcExe is running on $pcname"
            LogWrite "$targetProcExe is running on $pcname"
        } else {
            Write-Host "$targetProcExe not found on $pcname"
            LogWrite "$targetProcExe not found on $pcname"
        }
        # 添加日志分隔线,便于区分不同PC的记录
        LogWrite "-------------------------"
    } catch {
        Write-Host "Failed to connect to $pcname : $_"
        LogWrite "Failed to connect to $pcname : $_"
        LogWrite "-------------------------"
    }
}

额外说明

  • 运行脚本需具备目标PC的管理员权限,且目标PC需开启WMI服务(默认开启)。
  • 若偏好使用Get-Process,需确保目标PC配置了WinRM服务,语法为Get-Process -Name nscp -ComputerName $pcname -ErrorAction Stop。
  • CSV文件需包含Name列,每行对应一个目标PC的名称或IP地址。

内容的提问来源于stack exchange,提问作者Aviad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:05:53