Powershell - разбивает строки текстового файла на куски, а затем удаляет ненужную информацию - PullRequest
0 голосов
/ 03 февраля 2011

Работа со скриптом экспорта Active Directory.В настоящее время сценарий легко экспортирует объекты пользователя из данной группы в файл .txt как полностью определенные имена (т. Е. Вместо того, чтобы сообщать как «имя пользователя», вы получаете уродливое «CN = имя пользователя, OU = foo, OU = bar, DC»).= foo, DC = bar ").

Мой опыт работы с Powershell - в лучшем случае новичок.Что я получил до сих пор:

  • загрузка содержимого текстового файла
  • разделение содержимого текстового файла в ","
  • запись этого содержимогово второй текстовый файл.

  • полученный текстовый файл выглядит следующим образом:

    "CN=username  
    OU=foo  
    OU=bar  
    DC=foo  
    DC=bar"
    

Моя цель:

  • Сохранить любую полученную строкутекста, который начинается с "CN = (да, я бы хотел оставить это" в начале)
  • Удалить все остальное
  • Strip "CN = от начала результирующих строк
  • Примечание: длина имени пользователя может быть разной

Что у меня есть:

$a = (Get-Content c:\test.txt | foreach-Object {$_.split(",,") })  
Out-File c:\results.txt -inputObject $a

Я полностьюпотеряно в том, как искать в текстовых файлах шаблон с подстановочным знаком (т. е. искать все строки, содержащие «CN = * и сохранять только эти строки и эти строки), а затем вставлять результаты в .txt.

Большое спасибо за все, что вы можете дать.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2011

Select-String позволит это. Это вроде grep для PowerShell.

Однако, если я вас правильно понимаю, вы можете сделать это немного проще с

$a = (Get-Content c:\test.txt | foreach-Object {$_.split(",,") }) -match '^CN='

Операторы сравнения могут применяться к списку объектов и возвращать только совпадающие элементы.

1 голос
/ 03 февраля 2011

Возможно, также взгляните на Quest AD командлеты и используйте его в качестве сценария экспорта. Таким образом, вы можете точно выбрать, какие атрибуты вы хотите, без необходимости фильтровать вывод текстового файла, например,

Get-QADUser -Searchroot foo.bar/MyOu | Select Name, DisplayName, email 
...