Необходимо добавить информацию о местоположении AD в сценарии - PullRequest
0 голосов
/ 03 мая 2019

У меня есть скрипт для извлечения информации о сайте AD и подсети из леса.Необходимо добавить сведения о местоположении также в сценарий

. Сценарий протестирован и работает нормально, если он предоставляет сведения о сайте и подсети.

$configNCDN = (Get-ADRootDSE).ConfigurationNamingContext

$siteContainerDN = ("CN=Sites," + $configNCDN)

$siteObjs = Get-ADObject -SearchBase $siteContainerDN -filter { objectClass -eq "site" } -properties "siteObjectBL", name

foreach ($siteObj in $siteObjs) {

    $subnetArray = New-Object -Type string[] -ArgumentList $siteObj.siteObjectBL.Count

    $i = 0

    foreach ($subnetDN in $siteObj.siteObjectBL) {

        $subnetName = $subnetDN.SubString(3, $subnetDN.IndexOf(",CN=Subnets,CN=Sites,") - 3)

        $subnetArray[$i] = $subnetName

        $i++

    }

    $siteSubnetObj = New-Object PSCustomObject | Select SiteName, Subnets

    $siteSubnetObj.SiteName = $siteObj.Name

    $siteSubnetObj.Subnets = $subnetArray

    $file = "C:\temp\1.csv"

    Out-File $file -encoding ASCII -input $siteSubnetObj -append
} 

Я ожидаю получить сведения о местоположении AD, также используясценарий.

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Вы можете сократить этот скрипт с помощью команды Get-ADReplicationSite.Я также хотел бы рассмотреть возможность использования Export-Csv, поскольку вы выводите объекты в файл.

Get-ADReplicationSite -Filter * -Properties Subnets,Location |
   Select @{n='SiteName';e={$_.Name}},
   @{n='Subnets';e={$_.Subnets -replace "^CN=(.*?),CN=Subnets,.*$",'$1'}},Location |
   Export-Csv -Path 'C:\temp\1.csv' -encoding ASCII -NoTypeInformation

Export-Csv по умолчанию создаст файл с разделителями-запятыми (разделитель может быть изменен), а первая строка (заголовки) - это имена свойств ваших объектов.Каждая другая строка будет содержать значения, разделенные запятыми, для каждого из этих свойств.Столбцы для свойств и значений будут идеально выровнены.

Если у вас более 4 подсетей на сайт, только метод Out-File без изменения каких-либо других значений обрезает значения подсети.Вам нужно установить $formatenumerationlimit на значение выше 4 или -1 для неограниченного количества или убедиться, что вывод не в табличном формате.Работать с этим файлом будет намного сложнее, если вы не используете Export-Csv, поскольку не будет согласованного разделителя между свойствами элемента и их значениями.

Я могу добавить к этому сведения о местоположении, если вы объяснитеточно, что это такое.

0 голосов
/ 03 мая 2019

Я не знаю, на что вы ссылаетесь, используя «Местоположение», поэтому не могу помочь. Кроме того, я понимаю, что вывод файла легче читать таким образом, и, вероятно, он воспринимается человеком как отчет, но вы должны учитывать, что Out-file по умолчанию будет иметь ширину экрана при перенаправлении в файл, чтобы количество подсетей, которые будут сохранены будет зависеть от этой ширины (а не от фиксированного значения, такого как 4). Для увеличения ширины вывода вы можете использовать параметр -width

$Something | out-file $file -width 600

или установите ширину по умолчанию:

 $PSDefaultParameterValues=@{"Out-File:Width"="600"}

Обратите внимание, что большие числа могут иметь нежелательные побочные эффекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...