比较两个以上的字符串

时间:2014-09-24 18:23:11

标签: powershell adam compareobject

这是我想要实现的目标......

我必须在VMWARE中查看ADAM数据库以查看复制时间。我的问题是如何使用compare-object命令比较两个以上的字符串。我找不到任何超过两个值的文章。

这就是我开始写作的内容。我想尽可能让它变得充满活力......

#PORT FOR LDAP
$ldap = 389;

#PATH
$path = 'DC=vdi,DC=vmware,DC=int';

#SERVERS
$vm = @("fqdn" , "fqdn" , "fqdn");

#ARRAY FOR LOOP
$comp = @();

#LOOP FOR ARRAY COMPARE
for($i = 1; $i -le $vm.count; $i++)
{
    $comp += repadmin.exe /showrepl $svr":"$ldap $path | Select-String "Last attempt";
}

#CREATE DYNAMIC VARIABLES
for($i = 0; $i -le ($comp.count - 1); $i++)
{
    New-Variable -name repl$i -Value $comp[$i];
}

先谢谢你了!

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,你的问题太过模糊,我们无法为你的情况提供一个好的答案,所以我会专注于比较两个以上的字符串"。为此,我建议Group-Object。实施例

$data = @"
==== INBOUND NEIGHBORS ======================================

CN=Configuration,CN={B59C1E29-972F-455A-BDD5-1FA7C1B7D60D}
    ....
        Last attempt @ 2010-05-28 07:29:34 was successful.

CN=Schema,CN=Configuration,CN={B59C1E29-972F-455A-BDD5-1FA7C1B7D60D}
    ....
        Last attempt @ 2010-05-28 07:29:34 was successful.

OU=WSFG,DC=COM
    ....
        Last attempt @ 2010-05-28 07:29:35 failed, result -2146893008
(0x8009033
0):
"@ -split [environment]::NewLine

$comp = $data | Select-String "Last attempt"

$comp | Group-Object

Count Name                                                                  Group                
----- ----                                                                  -----                
    2         Last attempt @ 2010-05-28 07:29:34 was successful.            {        Last atte...
    1         Last attempt @ 2010-05-28 07:29:35 failed, result -2146893008 {        Last atte...

Group-Object和PowerShell非常灵活,因此您可以将其自定义为ex。显示不等于其余服务器的服务器的服务器名称和状态(例如,计数= 1或不在任何最大的组中)等,但我不会花更多的时间进入细节,因为我不知道你想要达到什么目标,所以我可能只是浪费了我们的时间。

总结:我可以告诉你的是,我可以(99%肯定)使用Group-Object来比较超过两个字符串"。