Powershell搜索多个域

时间:2014-04-01 04:40:50

标签: powershell pscmdlet

我正在尝试找到按业务划分的XP计算机帐户。我们在几个领域拥有几个不同的业务。

我有一组不同的txt文件(BusinessX.txt),每个文件对应一个列出商家计算机帐户存储位置的商家。每个列表可以在若干域和/或根级域中具有若干不同的OU。例如......

Business1.txt包含...

Business1.ad.com/Desktop/BusinessUnitA
Business1.ad.com/Desktop/BusinessUnitB
Project1.ad.com/Desktop
Project2.ad.com

我的搜索工作是为单个域找到XP计算机帐户。当我尝试根据我的列表扩展搜索以在域之间动态更改时,我没有成功。我正在考虑在我的ForEach-Object循环中放入一个“if”语句来验证域并用connect-QADService -Service 'Business1.ad.com'切换它。虽然有些域名有150,000个计算机帐户需要检查,但这似乎会增加相当大的开销。

有关基于我的txt文件列表动态切换域的策略的建议吗?

这是我的剧本......

get-content $Business1.txt |
ForEach-Object {get-qadcomputer -SearchRoot $_ -OSName '*XP**' -DontUseDefaultIncludedProperties -IncludedProperties OSName, CanonicalName, PwdLastSet, LastLogon, LastLogonTimeStamp} |
Select OSName, canonicalName, PwdLastSet, LastLogon, LastLogonTimeStamp |
Export-Csv “C:\XP_Computers_Business1_$((Get-Date).ToString('yyyy-MMM-dd_hh-mm-ss')).csv“ -NoTypeInformation 

1 个答案:

答案 0 :(得分:0)

如果您第一次阅读所有文本文件(可能将文件名添加为对象属性,以便知道它来自何处),那么在每个域上进行单独排序并让脚本执行其搜索域应该不会太难按域名。这样,您只需为每个域执行一次连接。

从头顶(完全未经测试的代码)我会做类似的事情:

    $files = get-childitem "C:\SomeFolder"
    #Construct an array to hold objects
    $OUSearchList = @()
    foreach ($file in $files)
    {
        $content = get-content $file
        #Get-content returns an array of lines - iterate
        foreach ($line in $content)
        {
            #Construct custom object
            $myobj = "" | Select OUPath, Filename, Domain
            $myobj.OUPath = $line
            $myobj.FileName = $File.Name
            $myobj.Domain = $myobj.OUpath.Split("/")[0]
            $ouSearchList += $myobj
        }

    }

    #Get the unique domains
    $Domains = $OUSearchList | select Domain -Unique

    #List through all the search paths, domain by domain
    foreach ($domain in $domains)
    {
        $DomainOUSearchPaths = $OUSearchList | where {$_.Domain -eq $domain}
        foreach ($search in $DomainOUSearchPaths)
        {
            $searchpath = $search.OUPath
            $searchFileName = $search.filename
            #put search logic in here

        }

    }