Powershell импортирует экспортированные файлы - PullRequest
0 голосов
/ 21 сентября 2018

Мне нужно обновить дату окончания срока действия для нескольких пользователей на основе адресов электронной почты.К сожалению, я не смог заставить это работать, поэтому сейчас я конвертирую сначала адрес электронной почты в samAccountname и после установки даты действия на основе samAccountName.К сожалению, я не знаю, как соединить эти два кода в один скрипт.Подскажите, пожалуйста, как мне их подключить?Спасибо.

Import-Module activedirectory
$users = Get-Content C:\Scripts\test.txt
$users | ForEach-Object {
    Get-ADUser -Filter "samAccountName -eq '$_'" -properties samaccountname | Select samaccountname
} | Export-CSV C:\Scripts\test.csv" -NoTypeInformation -Encoding UTF8



Import-CSV  "C:\Scripts\test.csv" | ForEach-Object {
$usr = get-aduser $_.samAccountName  |Select samAccountName  
Set-ADAccountExpiration -Identity $usr.samAccountName  -DateTime '21/09/2018' -Verbose
} 

1 Ответ

0 голосов
/ 24 сентября 2018

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

Предположим, что в CSV имеются следующие заголовки: «Электронная почта пользователя» и «Срок действия пользователя».поэтому, когда вы импортируете файл CSV в переменную, у вас будет пользовательский объект PS с информацией.Допустим, мы используем переменную $ Users.

PS C:\> $users = Import-Csv -Path C:\Users\user\Desktop\users.csv

PS C:\> $users

User Email             User expiration date
----------             --------------------
contact@saggiehaim.net 24/09/2018          
info@saggiehaim.net    20/09/2018          
admin@saggiehaim.net   28/09/2018       

Теперь мы можем запустить цикл for, найти пользователя и установить дату окончания срока действия.то, что я делаю, это запрашивает AD и спрашивает его также свойство EmailAddress, затем я делаю фильтр на основе электронной почты пользователя, когда мы находим объект, мы направляем его в set-ADAccountExpiration

foreach ($user in $users) {
    $UserEmail = $user.'User Email'
    Get-ADUser -Properties EmailAddress -filter "EmailAddress -eq $useremail" | Set-ADAccountExpiration -DateTime $user.'User expiration date' -Verbose
}

На что следует обратить внимание:

1.Этот сценарий зависит от предположения, что у вас есть адрес электронной почты пользователя в свойстве EmailAddress

2. Дата истечения срока хранения сохраняется в том же форматеваши окна, если нет, вы должны преобразовать его .

3. Если список очень большой, я бы рекомендовал сначала получить всех пользователей из активного каталога, а затем найтипользователи из этого списка, и не запрашивать LDAP снова и снова

ВСЕГДА ИСПЫТЫВАЙТЕ ПЕРЕД ТЕМ, ЧТО ВЫ НАЙДЕТЕ В ПРОИЗВОДСТВО !!!может быть, я понятия не имею и все неправильно;)

Надеюсь, я хоть немного тебе помог.и извините за плохой английский.

...