首页 文章

如何在powerhsell中查询多个域的计算机帐户

提问于
浏览
0

我的CSV文件中有批量计算机列表和服务器 Headers

所有这些服务器都是单林下的不同域 .

我需要获取所有这些服务器属性详细信息,如名称和操作系统,状态

我创建了下面的脚本,但这不起作用..

任何帮助,将不胜感激 .

Import-Module ActiveDirectory

# For each domain in the forest

$domains = (Get-ADForest).Domains
$servers = Import-Csv "D:\temp\computer.csv" | % {$_.server}

foreach ($server in $servers)
{
  foreach ($domain in $domains)
  {
    Get-ADComputer $server -Server $domain -Properties operatingsystem | select name,operatingsystem 
  }
}


您好

我添加了我的脚本如下:

Import-Module ActiveDirectory

对于林中的每个域

$ domains =(Get-ADForest) . 域名

$ servers = Import-Csv“D:\ temp \ computers.csv”| %{$ _ . 服务器}

$ DomainController =“DC2:3268”#3268是全局目录的commen端口

$ SearchBase =((Get-ADDomain(Get-ADForest).RootDomain).DistinguishedName)

foreach($ server in $ servers)

{

foreach($域中的域名)

{

Get-ADComputer $ server -Server $ DomainController -SearchBase $ SearchBase -Properties operatingsystem |选择名称,操作系统

}}

现在得到以下错误,我这次只指定了计算机的samaccountname而不是FQDS ..
####错误
Get-ADComputer:找不到接受参数'DPS002'的位置参数 . 在D:\ temp \ search_computer.ps1:34 char:5 Get-ADComputer $ server -Server $ DomainController -SearchBase $ SearchBase -Pr ... ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜:~~~~~~~~~~ CategoryInfo:InvalidArgument:(:) [Get-ADComputer],ParameterBindingException FullyQualifiedErrorId:PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

1 回答

  • 1

    您必须针对全局编录运行请求才能在整个AD林中查找AD对象 .

    • 你需要一个支持全球目录的服务器 . 选择旁边的一个 .
    Import-Module ActiveDirectory
    @((Get-ADForest).GlobalCatalogs) | Sort-Object
    
    • 你的脚本,有点修改
    Import-Module ActiveDirectory
    $DomainController = "ServerFromStep1:3268"  #  3268 is the commen port of global catalogue
    $SearchBase       = ((Get-ADDomain (Get-ADForest).RootDomain).DistinguishedName)
    
    foreach ($server in $servers)
    {
        Get-ADComputer $server -Server $DomainController -SearchBase $SearchBase -Properties operatingsystem | select name,operatingsystem
    }
    
    • 与2相同但能够从服务器列表中处理FQDN .
    foreach ($serverFQDN in $servers)
    {
        $Local:ServerName = (($serverFQDN -replace "\..*$", "").Trim())
        if ($ServerName) {
            Get-ADComputer $ServerName -Server $DomainController -SearchBase $SearchBase -Properties operatingsystem | select name,operatingsystem
        }
    }
    

相关问题