PowerShell 从 URL 中获取纯文本并用作变量

Pat*_*Pat 1 powershell

我有一个来自内部网站报告的服务器名称动态列表。我希望 PowerShell 从 URL 获取此列表,然后将其用作我可以循环访问的变量。

目前,这就是我所拥有的。

$servers = Invoke-WebRequest -URI http://myserver/hostgroup.php?hostgroup=test | Select -expand Content
Run Code Online (Sandbox Code Playgroud)

这将返回一个简单的列表,例如"SERVER1","SERVER2","SERVER3",。我想循环浏览这个列表来运行报告。这是一个简单的 foreach 作为起点(不起作用)。

foreach ($s in $servers) {
    if(Test-Connection -Quiet $s -Count 1) { 
        Write-Host "Online"

    } else {
        # connection test failed 
        Write-Host "`a`n" $s "is unreachable" -ForegroundColor Red 
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到的输出看起来像是使用整个字符串作为服务器名称,并且没有分解它。

这是输出。

 "SERVER1","SERVER2","SERVER3", is unreachable
Run Code Online (Sandbox Code Playgroud)

Kei*_*ill 5

除了将单个字符串拆分为字符串数组之外,您还需要修剪掉双引号,例如:

$result = ($servers = Invoke-WebRequest -URI http://myserver/hostgroup.php?hostgroup=test).Content
$servers = $result -split ',' -replace '"','' | Where {$_ -notmatch '^\s*$'}
Run Code Online (Sandbox Code Playgroud)