所以我试图从这里使用这个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
答案 0 :(得分:2)
我更喜欢在嵌入式表达式上使用格式字符串(即$()
)。我发现它更具可读性。此外,PowerShell会在每个键的哈希表上创建属性,因此您可以$_['url']
代替索引(即$_.url
)。
$results.notvalid |
ForEach-Object { 'Incorrect status code returned from {0}, code: {1}'
-f $_.url,$_.statuscode } |
Write-Warning
答案 1 :(得分:1)
如果要读取变量,则必须将字符串放在双引号而不是单引号中。此外,在这个位置,您不是直接访问变量值,因此您应该使用$()
来确保提前评估代码。
$results.notvalid | ForEach-Object {
write-warning "Incorrect status code returned from $($_['url']), code: $($_['statuscode'])"
}