在Powershell的HTML输出中获取所需列

在Powershell的HTML输出中获取所需列,powershell,powershell-3.0,powershell-ise,Powershell,Powershell 3.0,Powershell Ise,我获得了BIOS数据并将其保存在HTML文件中,但我不希望所有数据都在该文件中,我还需要对其进行格式化,以便它能够满足我的要求 代码: 试试这个: $freeSpace = (gwmi Win32_logicaldisk -Filter "DeviceID = 'C:'").FreeSpace gwmi Win32_BIOS ` | select PSComputerName,Manufacturer,SerialNumber,Version, @{n="AvailableSp

我获得了BIOS数据并将其保存在HTML文件中,但我不希望所有数据都在该文件中,我还需要对其进行格式化,以便它能够满足我的要求

代码:

试试这个:

$freeSpace = (gwmi Win32_logicaldisk -Filter "DeviceID = 'C:'").FreeSpace

gwmi Win32_BIOS `
  | select PSComputerName,Manufacturer,SerialNumber,Version,
      @{n="AvailableSpace";e={[int]($freeSpace / 1MB)}} `
  | ConvertTo-Html `
  | Out-File "C:/d/d/Test.htm"

因此,根据评论中的讨论,我认为您正在寻找以下内容:

function GetCompInfoWork 
{
   param (
     [string]$computername,[string]$logfile
     )
    $os = Get-WmiObject win32_operatingsystem -ComputerName $computername
    $bios = Get-WmiObject win32_bios -ComputerName $computername
    $disk = Get-WmiObject win32_logicalDisk -Filter "DeviceID= 'C:'" `
    -computername $computername

    $obj = New-Object -TypeName PSObject

    $obj | Add-Member -MemberType NoteProperty `
        -Name ComputerName -Value ($os.csname)
    $obj | Add-Member -MemberType NoteProperty `
        -Name Manufacturer -Value ($bios.manufacturer)
    $obj | Add-Member -MemberType NoteProperty `
        -Name SysDriveFree -Value ($disk.freespace / 1GB -as [int])
    $obj | Add-Member -MemberType NoteProperty `
        -Name SerialNumber -Value ($bios.serialnumber)
    $obj | Add-Member -MemberType NoteProperty `
        -Name Version -Value ($bios.version)            
    Write-Output $obj
}
function Get-CompInfo 
{
  param ([string[]]$computername,[string]$logfile )

  BEGIN
  {
    $usedParamater = $False
    if ($PSBoundParameters.ContainsKey('computername')) {
        $usedParamater = $True
        }
  }
  PROCESS {
    if ($usedParamater) 
    {
        foreach ($computer in $computername)
        {
            Getcompinfowork -computername $computer `
            -logfile $logfile
        }
    }          
    else 
    {
        Getcompinfowork -computername $_ `
        -logfile $logfile
    }

  }
  END {}
}

Get-CompInfo -computername localhost | ConvertTo-Html | Out-File C:\Output.html

可以使用
Select Object
cmdlet筛选数据。至于适合你的要求的格式:你的要求是什么?我需要在表格中列出你想要什么信息?如制造商、名称等?我需要以下数据1)系统名称2)制造商3)可用空间4)序列号5)版本将数据保存在表格列中的html文件中如何获取thosei指的是可用的硬盘空间我需要所有这些都在html文件$disk=([wmi]“\root\cimv2:Win32_logicalDisk.DeviceID='c:'”中“可用空间量C:has{0:#.0}GB总计”-f($disk.FreeSpace/1GB)|写入输出我需要将此数据与其他数据一起包含在html文件中。添加了可用磁盘空间计算。效果很好,只是出于好奇如果有许多驱动器,那么我们如何通过?在本例中,我们仅将其限制为C驱动器。我真的很感谢你的努力非常感谢你的支持。当你不接受别人的回答时,你真的不应该向他们寻求更多的帮助。FreeSpace:16455 Size:25454这是我的$disk显示的,但我的输出文件显示了以下数据SysDriveSpace SysDriveFree 0 158为什么这是DiscredityTank你这么做非常感谢您的帮助,非常方便:)@user2540455很高兴我能帮上忙。我在工作中使用类似于这个脚本的东西。我只是修改了它以符合你的标准。你计算出磁盘空间差异了吗?我没有任何问题。试着运行以下命令:Gwmi win32_logicaldisk-filer“deviceID='C:'”|选择{$\uu.freespace/1GB-as[int]}我想我可以做出两个正确的答案(刚才我知道我只能为一个:)还有一个疑问,我们如何找到一台计算机可以安装的最大ram
function GetCompInfoWork 
{
   param (
     [string]$computername,[string]$logfile
     )
    $os = Get-WmiObject win32_operatingsystem -ComputerName $computername
    $bios = Get-WmiObject win32_bios -ComputerName $computername
    $disk = Get-WmiObject win32_logicalDisk -Filter "DeviceID= 'C:'" `
    -computername $computername

    $obj = New-Object -TypeName PSObject

    $obj | Add-Member -MemberType NoteProperty `
        -Name ComputerName -Value ($os.csname)
    $obj | Add-Member -MemberType NoteProperty `
        -Name Manufacturer -Value ($bios.manufacturer)
    $obj | Add-Member -MemberType NoteProperty `
        -Name SysDriveFree -Value ($disk.freespace / 1GB -as [int])
    $obj | Add-Member -MemberType NoteProperty `
        -Name SerialNumber -Value ($bios.serialnumber)
    $obj | Add-Member -MemberType NoteProperty `
        -Name Version -Value ($bios.version)            
    Write-Output $obj
}
function Get-CompInfo 
{
  param ([string[]]$computername,[string]$logfile )

  BEGIN
  {
    $usedParamater = $False
    if ($PSBoundParameters.ContainsKey('computername')) {
        $usedParamater = $True
        }
  }
  PROCESS {
    if ($usedParamater) 
    {
        foreach ($computer in $computername)
        {
            Getcompinfowork -computername $computer `
            -logfile $logfile
        }
    }          
    else 
    {
        Getcompinfowork -computername $_ `
        -logfile $logfile
    }

  }
  END {}
}

Get-CompInfo -computername localhost | ConvertTo-Html | Out-File C:\Output.html