首页 > 解决方案 > 将 HTTP 状态代码发送到写控制台和剪贴板

问题描述

我有一个小的 PowerShell 脚本,我需要将 HTTP 状态代码发送到写控制台和 Windows 剪贴板。目前,我可以将 HTTP 状态代码发送到控制台(写控制台),但不能发送到剪贴板(同时)。我有一个非常具体的极端情况,我需要将状态代码发送到两个地方。下面的工作示例仅将状态代码发送到控制台。通过编辑,我可以将状态代码发送到剪贴板,但它不会发送到控制台。似乎 PowerShell 将允许您发送到其中一个,但不能同时发送到两者。注意:example.com 不是我正在使用的实际 URL,也不是 API 密钥。

#####################
#requires -Version 5
#requires -PSEdition Desktop

class TrustAllCertsPolicy : System.Net.ICertificatePolicy {
    [bool] CheckValidationResult([System.Net.ServicePoint] $a,
                                 [System.Security.Cryptography.X509Certificates.X509Certificate] $b,
                                 [System.Net.WebRequest] $c,
                                 [int] $d) {
        return $true
    }
}
[System.Net.ServicePointManager]::CertificatePolicy = [TrustAllCertsPolicy]::new()

$apiKey = "1HuDSkiLXFwib2FqJ88mgtfd1mMpaJoR"
$url = "http://www.example.com"
$header = @{"USPTO-API-KEY" = $apiKey}

#Tries 10 times: 
# $i=1; while($i -lt 10){Try{(Invoke-WebRequest -Method GET -Uri $url -Headers $header).StatusCode}catch{Write-Host($_.Exception.Response.StatusCode.value__)}  ;$i++}

#This would be even better.  It tests until it gets something other than a 200 or hits a maximum;
$i=1
Do{
 Try{$SC=(Invoke-WebRequest -Method GET -Uri $url -Headers $header).StatusCode}
 catch{$SC=($_.Exception.Response.StatusCode.value__)}
 Write-host($SC)
 $i++}
 Until($SC -ne 200 -or $i -gt 10)
  
######## END ################

标签: powershell

解决方案


使用 '+=' 复制变量,添加新项目,并保存旧变量。如果变量很大,它可以加起来。我首选的方式是使用列表:

$clipboard = New-Object Collections.Generic.List[String]
$clipboard.Add($SC)
...
Set-Clipboard $clipboard


推荐阅读