csv PowerShell脚本不会扫描进程

vbkedwbf  于 2023-02-14  发布在  Shell
关注(0)|答案(1)|浏览(123)

我是新的脚本任何我试图使一个脚本,读取PC列表从CSV文件,并检查如果一个特定的进程正在运行。
下面的代码是:

Function LogWrite
    {
       Param ([string]$logstring)
       Add-content $Logfile -value $($(Get-Date -Format yyyyMMdd-HHmmss) + " - " + $logstring)
    }
    $LogFile = "Path\to\log.txt" # Location of local log file name
    $CsvLocation = "\\path\to\CSV\File\Table.csv" #Location of the CSV file
    $csvdata = Import-Csv $ipmCsvLocation

    foreach($pc in $csvdata) {
        $IcingaProc = "nscp.exe"
        $pcname = $pc.Name
        Write-Host $("Looking for process "+ $IcingaProc + " in " + $pcname + "...")
        $Processes = get-process | Where-Object {$_.ProcessName -Like "nscp*"}
        foreach($Proc in $Processes){
           if ($Proc.ProcessName -eq $IcingaProc){
             Write-Host "Program installed succefully"
             LogWrite ("Program installed succefully in "+$pcname)
             LogWrite `r`n
            }
            else{
             LogWrite ("Could not find any CINIGA process")
             LogWrite `r`n
            }
         }  
    }
This is the output I get:
PS User> powershell.exe -ExecutionPolicy Bypass –Noprofile -file "Path\to\script.ps1"
Looking for process nscp.exe in PC1...
Looking for process nscp.exe in PC2...
Looking for process nscp.exe in PC3...
Looking for process nscp.exe in PC4...

它似乎没有进入第二个foreach循环..

pn9klfpd

pn9klfpd1#

我确实是指向localhost,并改为指向$pcName。当我用-ne而不是-eq“打开”if命令时,效果很好!谢谢你的帮助!

Function LogWrite
{
   Param ([string]$logstring)
   Add-content $Logfile -value $($(Get-Date -Format yyyyMMdd-HHmmss) + " - " + $logstring)
}
$LogFile = "Path\To\LogFIle.txt" # Location of local log file name
$CsvLocation = "\\Path\To\Referance\CSV\Table.csv"
$csvdata = Import-Csv $CsvLocation

foreach($pc in $csvdata) {
  $IcingaProc = "nscp"
  $pcname = $pc.Name
  Write-Host $("Looking for process "+ $IcingaProc + " in " + $pcname + "...")
  if (Test-Connection -ComputerName $pcname -Count 1 -Quiet) {
  $Processes = get-process -ComputerName $pcname | Where-Object {$_.ProcessName -Like "ns*"}
  
     foreach($Proc in $Processes){   
      if ($Proc.ProcessName -ne $IcingaProc){
       Write-Host ("Could not find any process")
       }
       else{
        Write-Host "Program is installed succefully"
        LogWrite ("Program is installed on "+$pcname)
        } 
      }
   }
   else{
    Write-Host ("The PC is not reachable!")
   }  
}

相关问题