PowerShell ForEach循环中的内联命令执行

时间:2018-01-16 21:55:09

标签: powershell

我熟悉BASH语法如何处理此请求但我无法在PowerShell中找到这样做的方法。

BASH示例:

for x in `ls .`; do something with ${x}; done

我试图用PowerShell执行相同的操作(为了演示目的,它的语法不正确)...

ForEach ($group in `$wsus.GetComputerTargetGroups()`)

...我显然遇到语法错误。

BASH to PowerShell翻译就是这里的问题。 :d

2 个答案:

答案 0 :(得分:5)

对于你拥有的例子,它可以正常工作(没有反引号):

ForEach ($group in $wsus.GetComputerTargetGroups()) {
    # do stuff
}

如果它是一个命令,你可以将它包装在子表达式中:

foreach ($process in $(Get-Process)) {
    # do stuff
}

您还可以查看在PowerShell管道中更加惯用的ForEach-Object cmdlet:

Get-Process | ForEach-Object { Write-Verbose "This process is $_" -Verbose }

答案 1 :(得分:0)

这可能有助于你开始......

$things = Get-ChildItem C:\Windows\

foreach ($thing in $things) {
    # Do a thing with each one in turn
    Write-Host $thing.Name -ForegroundColor Magenta
}