Частичная замена в Powershell - PullRequest
1 голос
/ 04 февраля 2020

Допустим, у нас есть следующий код

Get-ADUser -Filter {Enabled -eq $false} -properties * | sort Surname| FT GivenName, Surname, description

Он выдает:

 GivenName      Surname           description                          
 ---------      ---------         ------- -----------                                              
 Tom            Abbott            AccountingSystems 
 Tim            Baker             AccountingSystems 
 Tyler          Cabot             AccountingSystems

Мне нужно поставить пробел между «Учет» и «Система»

Я думал, что это будет работать:

Get-ADUser -Filter {Enabled -eq $false} -properties *
% {
   $Description = $.replace("Accounting","Accounting ")
   Set-ADUser = -Description $Description
  }

Но ... это не так.

1 Ответ

1 голос
/ 04 февраля 2020

Я бы порекомендовал вам несколько вещей:

  1. Нет такой переменной, как $. При циклическом просмотре элементов с помощью ForEach необходимо использовать $ _ (с подчеркиванием)
  2. Невозможно назначить значение командлету (Set-ADUser =).
  3. Используется | затем% (не% |)

Попробуйте это,

Get-ADUser -Filter {Enabled -eq $false} -properties Description | % {
   if ($_.Description) {
       $description = $_.Description.replace("Accounting","Accounting ") 
       Set-ADUser $_ -Description $Description
   } # else description is null.
}

Документация для Set-ADGroup
Документация для ForEach

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