PowerShell从URL获取明文并用作变量

时间:2014-12-29 20:20:40

标签: powershell

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

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

$servers = Invoke-WebRequest -URI http://myserver/hostgroup.php?hostgroup=test | Select -expand Content

这会返回一个简单的列表,例如"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 
    }
}

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

这是输出。

 "SERVER1","SERVER2","SERVER3", is unreachable

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

如果$ servers包含单个字符串,只需将其拆分:

$servers = $servers -split ','

这将返回一个数组,该数组可与Foreach语句一起使用。