PS noob 在这里(很快就会很明显),但努力变得更好。在我的 Exchange 2010 环境中,我导入和导出大量 .pst 文件。许多人会随机无法排队,一旦他们不在队列中,对源文件进行排序以确定哪些需要再次运行是非常乏味的,所以我正在尝试编写一个脚本来完成它。
首先,我在 pst 文件列表上运行一个目录,并用帐户的关联别名填充一个变量:
$vInputlist = dir $vPath -Filter *.pst |%{ get-mailbox -Identity $_.basename| select alias}
然后我用所有成功排队的文件/帐户的别名填充一个变量:
$vBatch = foreach ($a in (Get-MailboxImportRequest -BatchName $vBatchname)) {get-mailbox $a.mailbox | select alias}
然后我比较这两个数组,看看哪些文件需要再次排队:
foreach($should in $vInputlist){if ($vBatch -notcontains $should){Write-Host $should ""}}
看起来很简单,但数组中的值永远不会匹配,或者不匹配,视情况而定。我已经尝试过 -contains 和 -notcontains。在将变量导出到屏幕和/或 csv 文件的过程中,我进行了一些完整性检查,并且数据看起来很好。
例如,当第一次填充 $vInputlist 时,我将它发送到屏幕,它看起来像这样:
Alias
MapiEnableTester1.psiloveyou.com
MapiEnableTester2.psiloveyou.com
MapiEnableTester3.psiloveyou.com
MapiEnableTester4.psiloveyou.com
然而,我在上面显示的最后一行代码 (..write-host $should,"") 将输出:@{Alias=MapiEnableTester1.psiloveyou.com} @{Alias=MapiEnableTester2.psiloveyou.com} @{Alias=MapiEnableTester3 .psiloveyou.com} @{Alias=MapiEnableTester4.psiloveyou.com}
(这些都显示为一列,不知道为什么他们不会在这里显示)
我试过像这样声明数组 $vInputlist = @()
我尝试过使用 .replace 清除 $_.basename 中的 .pst 而不是搜索别名
我已经搜索了比较数组,直到我手指发青,我认为我的比较没有错,我相信无论我如何填充这些变量,我都会破坏或更改数据,以便看似简单地匹配数据没有。
任何帮助将不胜感激。TIA