1

所以我试图从这里使用这个powershell负载:Getting the current hash key in a ForEach-Object loop in powershell

$myHash.keys | ForEach-Object {
    Write-Host $_["Entry 1"]
}

一切正常,但我想将值作为另一个字符串的一部分输出,即:

$results.notvalid | ForEach-Object {
    write-warning 'Incorrect status code returned from $_["url"], 
                                                   code: $_["statuscode"]'
}

所以我希望输出为:

从 www.xxxx.com 返回的状态码不正确,代码:404

相反我得到

Incorrect status code returned from $_["url"], code: $_["statuscode"]

我错过了什么?


顺便说一句,如果我这样做的话,这可行

$results.notvalid | ForEach-Object {
        write-warning $_["url"]
    }

然后我得到

www.xxxx.com

4

2 回答 2

2

我更喜欢使用格式字符串而不是嵌入式表达式(即 $())。我觉得它更具可读性。此外,PowerShell 在哈希表上为每个键创建属性,因此$_['url']您可以使用$_.url.

$results.notvalid |
    ForEach-Object { 'Incorrect status code returned from {0}, code: {1}' 
                    -f $_.url,$_.statuscode } |
    Write-Warning
于 2013-07-09T08:21:32.587 回答
1

如果要读取变量,则必须将字符串放在双引号而不是单引号中。此外,在这种情况下,您不会直接访问变量值,因此您应该使用$()以确保提前评估代码。

$results.notvalid | ForEach-Object {
    write-warning "Incorrect status code returned from $($_['url']), code: $($_['statuscode'])"
}
于 2013-07-05T14:18:48.733 回答