首页 > 解决方案 > Powershell如何列出其属性下列中的值?

问题描述

我想更改对象的输出,以便显示所有数据。

$filepath = "C:\Users\vansteenkistea\Desktop\scriptExerciseProcessesWindows.csv"

$data = import-csv $filepath 

$processes = get-process| Select-Object Path

$known = New-Object System.Collections.Generic.List[System.Object]
$malicious = New-Object System.Collections.Generic.List[System.Object]

#Creating the arrays
$malArray = @()
$knownArray = @()
$unknownArray= @()

#fill up arrays with data

foreach ($line in $data)
{
   $known.add($line.known)
   $malicious.add($line.malicious)
}

foreach ($process in $processes)
{
    foreach ($mal in $malicious) 
    {
        if ([bool]($process -like '*' + $mal +'*' )) 
        {
            Write-Host "$($process.path) is mall"
            $malArray+= $process.Path
        }
    }

    foreach ($know in $known)
    {
        if ([bool]($process -like '*' + $know +'*' ))
        {
            Write-Host "$($process.path) is known"
            $knownArray += $process.Path
        }
        elseif ($process.Path.Length -ne 0) 
        {
            Write-Host "$($process.path) is unknown"
            $unknownArray+= $process.Path
        }
    }
}

$yourData = @(
  @{known=$knownArray;Unknwon=$unknownArray;Malicious=$malArray}| % { New-Object object | Add-Member -NotePropertyMembers $_ -PassThru }
)

$yourData

我的输出:

我的输出

期望的输出:

看起来像这样的东西

期望的输出

我尝试了多种方法,例如格式化表格、将数据放入对象而不是数组等。

有人知道我如何在其属性下的列中列出值吗?

标签: powershellshellobjectscripting

解决方案


也许是一个for循环遍历列表?

$filepath = "C:\Users\vansteenkistea\Desktop\scriptExerciseProcessesWindows.csv"

$data = import-csv $filepath 

$processes = get-process| Select-Object Path

$known = New-Object System.Collections.Generic.List[System.Object]
$malicious = New-Object System.Collections.Generic.List[System.Object]

#Creating the arrays
$malArray = @()
$knownArray = @()
$unknownArray= @()

#fill up arrays with data

foreach ($line in $data)
{
   $known.add($line.known)
   $malicious.add($line.malicious)
}

foreach ($process in $processes)
{
    foreach ($mal in $malicious) 
    {
        if ([bool]($process -like '*' + $mal +'*' )) 
        {
            Write-Host "$($process.path) is mall"
            $malArray+= $process.Path
        }
    }

    foreach ($know in $known)
    {
        if ([bool]($process -like '*' + $know +'*' ))
        {
            Write-Host "$($process.path) is known"
            $knownArray += $process.Path
        }
        elseif ($process.Path.Length -ne 0) 
        {
            Write-Host "$($process.path) is unknown"
            $unknownArray+= $process.Path
        }
    }
}

    for ($i=0; $i -lt ($knownArray.Count + $unknownArray.Count + $malArray.Count); $i++){
        [PSCustomObject]@{
            Known     = $knownArray[$i]
            UnKnown   = $unknownArray[$i]
            Malicious = $malArray[$i] }
    }

推荐阅读