Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 向PSObject添加新值-这是最好的方法吗?_Powershell_Csv_Export To Csv_Psobject - Fatal编程技术网

Powershell 向PSObject添加新值-这是最好的方法吗?

Powershell 向PSObject添加新值-这是最好的方法吗?,powershell,csv,export-to-csv,psobject,Powershell,Csv,Export To Csv,Psobject,我有下面的代码,它可以工作。但我想知道这是否是最好的方法,因为它一次又一次地重复这个结构 $Computers = Get-Content -Path C:\scripts\Computers.txt $AllComputers = @() foreach ($machine in $Computers) { $objCompSys = Get-WmIObject -class "Win32_ComputerSystem" -cn $machine -EA silentlyContinue

我有下面的代码,它可以工作。但我想知道这是否是最好的方法,因为它一次又一次地重复这个结构

$Computers = Get-Content -Path C:\scripts\Computers.txt
$AllComputers = @()
foreach ($machine in $Computers) {
  $objCompSys = Get-WmIObject -class "Win32_ComputerSystem" -cn $machine -EA silentlyContinue  -namespace "root\CIMV2"
  foreach ($item in $objCompSys) {
    $compname = $item.Name
    $physicalRAM = [Math]::Ceiling($item.TotalPhysicalMemory / 1MB)
    $numProcs = $item.NumberOfProcessors
  }
  $objProc = Get-WMIObject -class "Win32_Processor" -cn $machine -EA silentlyContinue -namespace "root\CIMV2"
  foreach ($item in $objProc) {
    $procType = $item.Name
    $procSpeed = $item.MaxClockSpeed
  }
  if (procSpeed -eq "486") {
    $Data1 = @{
      MachineName    = $compname
      CPUSpeed       = $procSpeed
      "Num CPUs"     = $numProcs
      "Physical RAM" = $physicalRAM
      "Summary"      = "486 process - check"
      New-Object PSObject -Property $data1
    }
    $AllComputers += $Data1
  } elseif (procSpeed -eq "586") {
    $Data2 = @{
      MachineName    = $compname
      CPUSpeed       = $procSpeed
      "Num CPUs"     = $numProcs
      "Physical RAM" = $physicalRAM
      "Summary"      = "586 process - check"
      New-Object PSObject -Property $data2
    }
    $AllComputers += $Data2
  } else (procSpeed -eq "6*") {
    $Data3 = @{
      MachineName    = $compname
      CPUSpeed       = $procSpeed
      "Num CPUs"     = $numProcs
      "Physical RAM" = $physicalRAM
      "Summary"      = "New Models - Good to go"
      New-Object PSObject -Property $data3
    }
    $AllComputers += $Data3
  }
}

$AllComputers | Out-GridView
对。设置一次“数据”表,然后根据需要仅更改“摘要”字段:

$Computers = Get-Content -Path C:\scripts\Computers.txt
$AllComputers = @()
foreach($machine in $Computers)
{
    $objCompSys = Get-WmIObject -class "Win32_ComputerSystem" -cn $machine -EA silentlyContinue  -namespace "root\CIMV2"
    foreach($item in $objCompSys)
    {
        $compname = $item.Name
        $physicalRAM = [Math]::Ceiling($item.TotalPhysicalMemory / 1MB)
        $numProcs = $item.NumberOfProcessors
    }

    $objProc = Get-WMIObject -class "Win32_Processor" -cn $machine -EA silentlyContinue  -namespace "root\CIMV2"
    foreach($item in $objProc)
    {
        $procType = $item.Name
        $procSpeed = $item.MaxClockSpeed
    }
    $Data = @{
        MachineName    = $compname
        CPUSpeed       = $procSpeed
        "Num CPUs"     = $numProcs
        "Physical RAM" = $physicalRAM  
    }

    $Data["Summary"] = switch($procSpeed)
    {
        "486" { "486 process - check" } 
        "586" { "586 process - check" } 
        default { "New Models - Good to go" }
    }

    $AllComputers += New-Object psobject -Property $Data
}
$AllComputers | Out-GridView
上面的
开关
与此if/else结构类似:

if($procSpeed -eq "486") { 
    "486 process - check" 
} elseif($procSpeed -eq "486") { 
    "586 process - check"
} else { 
    "New Models - Good to go" 
}

谢谢你,马蒂亚斯。我会在几个小时内试一试,然后告诉你。非常感谢。我很感激。