如何在powerhsell

时间:2015-10-26 13:48:52

标签: csv powershell

我的CSV文件中有批量计算机列表,其中包含服务器标题

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

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

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

任何帮助都将不胜感激。

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 
  }
}

HI

我添加了如下脚本:

Import-Module ActiveDirectory

对于林中的每个域

$ domains =(Get-ADForest)。域名

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

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

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

foreach($ server in $ servers)

{

foreach($ domains中的域名)

{

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 个答案:

答案 0 :(得分:1)

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

  1. 您需要一台支持全球目录的服务器。选择旁边的一个。

    Import-Module ActiveDirectory
    @((Get-ADForest).GlobalCatalogs) | Sort-Object
    
  2. 您的脚本,稍作修改

    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
    }
    
  3. 与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
        }
    }