Необходимо обновить атрибуты для целевых пользователей AD, такие как ObjectSid, msExchMasterAccountSid из файла CSV - PullRequest
0 голосов
/ 01 апреля 2020

В настоящее время я тестирую следующий сценарий и пытаюсь автоматизировать его, определяя и проверяя параметры.

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

SourceUser | TargetUser

Идея состоит в том, чтобы запустить скрипт и заменить следующее:

#create variables
$sourceUser = "TestUser1@old.domain.com"
$targetUser = "TestUser1@new.domain.com"
$sourceusername,$sourcedomain = $sourceUser -split ("@")
$targetusername,$targetdomain = $targetUser -split ("@")
$SourceAccount = Get-ADUser $sourceusername -server $sourcedomain -Properties objectSid
$TargetAccount = Get-ADUser $targetusername -Server $targetdomain 

#get the objectSid of the source account
$objectSid = $SourceAccount.objectSid

#copy source account objectSid to target account msExchMasterAccountSid
$TargetAccount | Set-ADUser -Replace @{"msExchMasterAccountSid"=$objectSid}

#enable target account
$TargetAccount | Enable-ADAccount

#disable the source account
$SourceAccount | Disable-ADAccount

#move the migrated user into prod OU
$TargetAccount | Move-ADObject -TargetPath "OU=Test,OU=Users,DC=new,DC=domain,DC=com"

Я нашел уже несколько параметров, которые, как я считаю, помогут достичь двух вещей, таких как целевой домен и целевой OU:

  [CmdletBinding()]
  Param(
  #target domain
  [parameter(Mandatory,Position=1)]
  [ValidateScript({Get-ADDomain -Identity $_})]
  [String]$Domain,

  #target OU
  [parameter(Position=2)]
  [ValidateScript({Get-ADOrganizationalUnit -Identity $_})]
  [String]$TargetOu
  )

Кто-нибудь может помочь мне собрать весь этот сценарий, пожалуйста? 101

Спасибо

1 Ответ

0 голосов
/ 01 апреля 2020

ОК, допустим, ваш CSV-файл содержит что-то вроде

SourceUser, TargetUser
TestUser1@old.domain.com,Testuser1@new.domain.com

. Очевидно, что на самом деле ваш CSV-файл будет состоять из более чем одной пары источника и цели.

Теперь начнем с код, который вы предоставили, поместите его в скобки под foreach l oop и передавайте данные csv по одной записи за раз по конвейеру. Примерно так

Import-csv MyCsvFile.csv |
foreach {

#create variables
$sourceUser = $_.SourceUser
$targetUser = $_.TargetUser
$sourceusername,$sourcedomain = $sourceUser -split ("@")
$targetusername,$targetdomain = $targetUser -split ("@")
$SourceAccount = Get-ADUser $sourceusername -server $sourcedomain -Properties objectSid
$TargetAccount = Get-ADUser $targetusername -Server $targetdomain 

#get the objectSid of the source account
$objectSid = $SourceAccount.objectSid

#copy source account objectSid to target account msExchMasterAccountSid
$TargetAccount | Set-ADUser -Replace @{"msExchMasterAccountSid"=$objectSid}

#enable target account
$TargetAccount | Enable-ADAccount

#disable the source account
$SourceAccount | Disable-ADAccount

#move the migrated user into prod OU
$TargetAccount | Move-ADObject -TargetPath "OU=Test,OU=Users,DC=new,DC=domain,DC=com"

}

Я не исправил отступы для вас, но вы поняли.

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