Open scriptingstudio opened 1 year ago
Еще немного красоты. Убираем промежуточные переменные, промежуточные действия и неоптимальную логику. Больше powershell-way.
function ConvertTo-HashTable {
# Конвертирует строки в хеш таблицу
Param (
[String]$StringData,
$ExtensionData
)
$HashTable = @{}
if ($StringData) {
$StringData.Split([Environment]::NewLine) | . { process {
(ConvertFrom-StringData -StringData $_).GetEnumerator().foreach{
$key = $_.name
$value = $_.value.trim('"')
$HashTable[$Key] = if ($HashTable[$Key]) {
switch ($Key) {
"DC" { $Value, $HashTable[$Key] -join '.' }
"OU" { $HashTable[$Key], $Value -join '\' }
default { $HashTable[$Key], $Value -join ' ' }
}
}
else {$Value}
}
}}
}
elseif ($ExtensionData) {
foreach ($Extension in $ExtensionData) {
$Value = $Extension.Format($true)
if (-not $Value) { $Value = $true }
$HashTable[$Extension.Oid.Value] = $Value
}
}
$HashTable
}
function Repair-Name {
# Исправляет имена в значениях
Param (
[String]$Name = "",
[Switch]$Expanded
)
$Name = $Name -Replace "Общество с ограниченной ответственностью", "ООО"
$Name = $Name.Replace("_", " ").Replace('"', "")
if ($Expanded) {
($Name -Replace '[,*.]').TrimStart("0")
} else {$Name}
}
Можно даже еще сократить на пару строк и 4 скобки
$StringData.Split([Environment]::NewLine).foreach{
$key,$value = $_.split('=',2).trim()
$value = $value.trim('"')
$HashTable[$Key] = if ($HashTable[$Key]) {
switch ($Key) {
"DC" { $Value, $HashTable[$_] -join '.' }
"OU" { $HashTable[$_], $Value -join '\' }
default { $HashTable[$_], $Value -join ' ' }
}
}
else {$Value}
}
Немного концевой оптимизации. И гораздо быстрее, и красивее.
add-member
медленный; зачем 100500 раз изменять структуру объекта? Один раз создали и все.UPDATE
русский язык:
об сертификате
=>о сертификате
об встроенных лицензиях
=>о встроенных лицензиях
об субъекте
=>о субъекте
(но
об стол
ио столб
:-)))