Уберите результат с комбинированной команды - PullRequest
1 голос
/ 10 октября 2019

Я пытаюсь привести в порядок вывод команды. Команда:

Get-ADComputer -LDAPFilter "(name=comput*)" -searchbase "ou=xx,dc=xx,dc=local" | 
Add-ADPrincipalGroupMembership -MemberOf Group_name -passthru

Я использовал «Start-Transcript» для вывода в файл. Но каждый файл дает:

DistinguishedName : CN=Computer1,OU=xx,DC=xx,DC=LOCAL
Name              : Computer1
ObjectClass       : computer
ObjectGUID        : 11111111-1111-1111-1111-111111111111
SamAccountName    : Computer1$
SID               : S-1-5-21-1111111111-111111111-1111111111-111111

В идеале я бы просто хотел получить список «Имя» из команды.

Также, если возможно, можем ли мы изменить старт / стоп-транскрипт, чтобы дать лучший формат даты, чем «Время окончания: 20191010163001»

В идеале, я бы просто хотел вместо этого вывести в CSVтак что я могу иметь список в столбцах и просто отфильтровать то, что мне не нужно, если это проще. Я не знаю, могу ли я использовать файл экспорта вместо этого, чтобы получить CSV?

1 Ответ

1 голос
/ 10 октября 2019

Вы должны извинить меня, я только что понял, как использовать классы в PowerShell, и я намеренно усложняю свою жизнь, чтобы включить их во все :-)

Вы можете создатькласс для хранения требуемой информации (например, «ComputerName», «GroupName» и «TimeStamp»), создание вида Foreach-Object при использовании Get-ADComputer, выполнение действий, создание нового экземпляра класса, добавление экземплярав список, а затем вывести список в CSV, когда закончите. Я собираюсь прекратить бродить сейчас, вот что я бы использовал:

#Create a new class to hold the info for our CSV entry
Class CSVEntry{
    [String]$ComputerName
    [String]$GroupName
    [String]$TimeStamp
}

#Creating a list to hold the CSV entries
$Results = New-Object 'System.Collections.Generic.List[PSObject]'

#Defined the name of the group here
$groupName = 'Group_Name'

Get-ADComputer -LDAPFilter "(name=comput*)" -searchbase "ou=xx,dc=xx,dc=local" | ForEach-Object{

    #Add the computer to the group here
    Add-ADPrincipalGroupMembership -MemberOf $groupName -Identity $_

    #Build a custom CSVEntry object and add it to the list
    $newRecord = [CSVEntry]::new()
    $newRecord.ComputerName = $_.Name
    $newRecord.GroupName = $groupName
    $newRecord.TimeStamp = Get-Date

    #Add the new record to the list
    $Results.Add($newRecord)
}

#Export the list of CSV entries
$Results | Export-Csv C:\Users\user\Desktop\test.csv

Может быть, это перепекан, но ... но я надеюсь, что это поможет вам :)

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