我们拥有以UsersA-B,UsersC-D等开头的Exchange信息存储,然后是那些超出该命名约定的存储信息存储。
$allIS = Get-MailboxDatabase |
Where { $_.name -notlike "*Users*" } |
Select Identity
我将查找当前用户信息存储,然后尝试在$ allIS数组上进行比较。如果匹配,请执行一些操作。
例如,当我输出$ allIS [0]的值时,它返回@ {Identity = MSCCR \ CEO \ CEO}
我想将这些转换后的字符串放入不同的数组中,然后进行比较。这将是一个动态的信息存储列表,以进行比较。但也许这不是最好,最有效的方式。任何人都有关于尝试进行这种比较的最佳方法的建议,就像现在我在这里将苹果与橙子进行比较。
答案 0 :(得分:9)
很难说这是否可以在没有看到第二部分的情况下进行优化......
但是很容易获得一系列标识,要么在select上使用-ExpandProperty,要么使用foreach {$ _。Identity}而不是select:
$allIS = Get-MailboxDatabase | ? { $_.name -notlike "*Users*" } | select -expand Identity
$allIS = Get-MailboxDatabase | ? { $_.Name -notlike '*Users*' | foreach { $_.Identity}
HTH 巴特克
答案 1 :(得分:1)
为更多Powershelly答案编辑:
$isNames = @()
$allIS = Get-MailboxDatabase |
Where { $_.name -notlike "*Users*" } |
Select Identity |
%{ $isNames += $_.name }
在功能上与我的原始答案相同,但使用foreach
将输出管道传输到%
循环,这是我想要进入的习惯。
先前的回答:
$isNames = @()
foreach ($is in $allIS)
{
$isNames += $is.identity
}
它为您提供了一个仅包含信息存储名称的简单数组,作为字符串而不是对象。
答案 2 :(得分:0)
当您尝试使用"属性取消引用运算符" ''对于不是数组类成员的属性,它将取消引用数组的每个元素。
$allIS = (Get-MailboxDatabase | ? { $_.name -notlike "*Users*" }).Identity