管道的基本概念就是从一条命令的输入到另一个命令。当然他们之间的传递不是纯文本的,所有,有了管道,我们可以通过PowerShell完成非常复杂的任务。
我们可以是使用一条命令,根据一个OU或者一个数据库下的所有邮箱用户,设定办地点,例如下面这条命,我会把邮箱用户位于数据库”Mailbox Darabase 1014271532”下的所有用户的办公地点更改为总部
在管道中,我们可以通过管道符号(|)使用一系列的命令,在上一个实例中,我们使用Get-Mailbox返回一个邮箱的对象集合。每个邮箱包含多个AD属性,例如:name,数据库,位置等。而Set-Mailbox命令可以接受来自Get-Mailbox管道的输入,所以我们可以通过一条简单的PowerShell命令修改真个数据库中的用户邮箱的相关信息,在这里,我们可以看到PowerShell带来的高效。
当然也可以对输出结果进行过滤,例如可以使用Where-Object命令。下面继续一个例子,我们可以过滤出最大发送限制为10mb的邮箱账户
Get-Mailbox | Where-Object{$_.MaxSendSize –eq 10mb}
更多命令参考:
Get-User |
Where-Object{$_.title -eq "Exchange Admin"} | Foreach-Object{
Add-RoleGroupMember -Identity "Organization Management" `
-Member $_.name
}
在这条管道命令当中,开始使用一条简单的过滤条件来返回所有title为“Exchange Admin”的账户。通过管道将输出传给ForEach-Object对每个对象进行处理,把这些用户加入到“Organization Management”角色组中。
在管道中也可以使用别名,使用别名我们减少输入量。看看下面使用别名的管道命令:
Get-User |
?{$_.title -eq "Exchange Admin"} | %{
Add-RoleGroupMember -Identity "Organization Management" `
-Member $_.name
}
其实,Where-Object和ForEach-Object还有其它的别名,看看下面的命令:
Get-User |
where{$_.title -eq "Exchange Admin"} | foreach{
Add-RoleGroupMember -Identity "Organization Management" `
-Member $_.name
}
转载于:https://blog.51cto.com/winteragain/1607555