在PowerShell输出表中添加自定义值

时间:2019-02-12 11:01:47

标签: powershell

我有一个应用程序Web URL列表,其中我试图通过Invoke-WebRequest命令方法监视Web URL的HTTP状态代码。

我通过以下命令获得了列表对象:

Invoke-WebRequest https://example.com/123 | Get-Member

在这里,我使用statuscode和statusdescription字段将其包括在输出中:

Invoke-WebRequest https://example.com/123 |
    Select-Object StatusCode, StatusDescription |
    ft -a

现在,我希望在状态代码和状态描述之前在输出中包含URL的自定义名称,以便输出如下所示

URL          StatusCode StatusDescription
---          ---------- -----------------
abc web page        200 OK       

2 个答案:

答案 0 :(得分:0)

如果您不需要将数据存储在变量中,只需打印就可以了

$URLsources = "http://fooo/fooURL1:800","http://fooo/fooURL2:800","http://fooo/fooURL2:800"

#table definition
    $tabName = "Output table"

    #Create Table object
    $table = New-Object system.Data.DataTable “$tabName”

    #columns definition
    $col1URL = New-Object system.Data.DataColumn URL,([string])
    $col2Status = New-Object system.Data.DataColumn Status,([string])
    $col3Desc = New-Object system.Data.DataColumn Desc,([string])

    #add columns
    $table.Columns.Add($col1URL)
    $table.Columns.Add($col2Status)
    $table.Columns.Add($col3Desc)


foreach($url in $URLsources){
  $result = Invoke-WebRequest $url 

  #preparation of the row
      $row = $table.NewRow()
      $row.URL= $url
      $row.Status= $result.StatusCode
      $row.Desc= $result.StatusDescription

  #add row to the table  
  $table.Rows.Add($row)

}

#print out the table
$table | format-table -AutoSize 

答案 1 :(得分:0)

您可以将所有内容添加到您的输出中:

Invoke-WebRequest www.google.com | Select-Object -Property @{n="URL";e={'Any Name'}},StatusCode, StatusDescription

如果您想要在输出中检查的真实网址,可以这样做:

Invoke-WebRequest www.google.com | Select-Object -Property @{n="URL";e={$_.BaseResponse.ResponseUri.Host}},StatusCode, StatusDescription