假设我正在处理函数中的用户对象列表。
Function DoThings {
Process { $_.memberof).where{ $_ -match "Team_" }.foreach{ Remove-ADGroupMember $_ $_.samaccountname}
}#did things
问题在于,由于foreach循环用于where的输出,因此我将自己的范围缩小到无法访问其余对象属性。
我想遍历对象属性的一个子集,但是我还需要能够访问用户属性中的其他信息以传递给cmdlet(例如用户名)。
到目前为止,我唯一能弄清楚的事情就是将$ _。samaccountname分配给一个临时变量,然后再调用它,但这很不雅致。
有没有更清洁的方法?
答案 0 :(得分:1)
这可以被认为是更优雅的:
Function DoThings {
Process {
($_.memberof) |
Where-Object { $_ -match "Team_" } -PipelineVariable pipevar |
ForEach-Object { Remove-ADGroupMember $_ $pipevar.samaccountname}
}#did things
的更多信息