Замените строку, пока ее длина меньше предела с помощью PowerShell - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь обновить свойства учетных записей пользователей AD значениями, импортированными из CSV-файла. Проблема заключается в том, что некоторые свойства, такие как department, допускают строки максимальной длины не более 64, чем указано в файле, и может быть до 110.

Я нашел и принял решение, предоставленное TroyBramley в этой теме - Как заменить несколько строк в файле с помощью PowerShell (спасибо, Трой).

Работает нормально, но ... Хорошо. После того, как все замены имеют место, текст менее значим, чем изначально.

Например, исходный текст First Department of something1 something2 something3 something4 приведет к 1st Dept of sth1 sth2 sth3 sth4

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

Кстати. Я хотел бы выбрать, какая замена занимает первую, вторую и т. Д.

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

Я вижу разрешение, заменяя строки по одной, контролируя длину после каждой замены. Но с почти 70 строками это приводит к огромной части кода. Может быть, есть более простой способ?

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете перебирать список замены, пока строка не достигнет определенного значения MaxLength.

## Q:\Test\2018\06\26\SO_51042611.ps1

$Original = "First Department of something1 something2 something3 something4"

$list = New-Object System.Collections.Specialized.OrderedDictionary
$list.Add("First","1st")
$list.Add("Department","Dept")
$list.Add("something1","sth1")
$list.Add("something2","sth2")
$list.Add("something3","sth3")
$list.Add("something4","sth4")

$MaxLength = 40

ForEach ($Item in $list.GetEnumerator()){
    $Original = $Original -Replace $Item.Key,$Item.Value
    If ($Original.Length -le $MaxLength){Break}
}

"{0}: {1}" -f $Original.Length,$Original

Пример вывода с $ MaxLength, установленным на 40

37: 1st Dept of sth1 sth2 sth3 something4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...