Добавить лицензии o365 через импорт csv powershell?

У меня есть сценарий, который я использую для создания новых пользователей, и я хотел бы также добавить в него еще несколько строк, чтобы он добавлял лицензию O365 к каждому новому созданному пользователю (бесплатные лицензии, уже существующие в O365), а затем давал одному пользователю доступ к календарям и почтовым ящикам каждого из этих пользователей.

Мой рабочий код на данный момент:

        Import-Csv "C:\blablabla\filename.csv" | ForEach-Object { 
    New-ADUser -Name $_.Name `
     -GivenName $_."GivenName" `
     -Surname $_."Surname" `
     -DisplayName $_."DisplayName" `
     -SamAccountName  $_."samAccountName" `
     -UserPrincipalName  $_."UserPrincipalName" `
     -Path $_."Path" `
     -AccountPassword (ConvertTo-SecureString “Pa$$w0rd” -AsPlainText -force) -Enabled $true `
     -EmailAddress $_."EmailAddress" `
     -ProfilePath $_."ProfilePath" `
     -HomeDrive $_."HomeDrive" `
     -HomeDirectory $_."HomeDirectory" `
     -ScriptPath $_."ScriptPath" `
     -Server $_."Server" `
    }
Start-ADSyncSyncCycle -PolicyType Initial

Остальные строки, которые я должен добавить,

Set-MsolUserLicense -UserPrincipalName "@domain.com" -AddLicenses "domain:STANDARDPACK" 
Add-MailboxPermission -Identity newuser@domain.com -User 'admin@domain.com' -AccessRight FullAccess -InheritanceType All -Automapping $false 
Add-MailboxFolderPermission -Identity newuser@domain.com:\calendar -user admin@domain.com -AccessRights Editor

Моя проблема в том, что я не знаю, как добавить эти последние три команды в приведенный выше сценарий, чтобы эти три действия выполнялись для каждого пользователя, созданного из csv, и чтобы UPN извлекались из csv.

У меня уже есть рабочий сценарий для подключения к O365 с сохраненными учетными данными перед этими тремя строками, а именно:

$AdminName = "admin@domain.com"
$Pass = Get-Content "C:\blablabla\O365Credentials.txt" | ConvertTo-SecureString
$Cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $AdminName, $Pass
Import-Module MSOnline
Connect-MsolService -Credential $cred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection
Import-PSSession $Session

Думаю, я мог бы просто добавить этот бит «подключиться к O365» между ними или в начале скрипта, но я просто не знаю, как объединить эти три команды с остальной частью скрипта.

Любая помощь будет принята с благодарностью.

Спасибо.

(а кто-нибудь еще знает, как это сделать?)

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

Theo 31.10.2018 14:30

Что ж, у меня в конце есть строка принудительной синхронизации политики, я забыл добавить это в скрипт, в основном она выполняет политику синхронизации рекламы после того, как создает пользователей, и они сразу же создаются и синхронизируются. Есть предположения? (Я добавил это в пост)

user757392 31.10.2018 14:42

Да, это нормально и все такое, но создание почтовых ящиков может занять много времени ... Мне бы не хотелось добавлять Start-Sleep -Seconds 900 или около того, чтобы останавливать скрипт на такое долгое время. Кроме того, чтобы убедиться, что Start-ADSyncSyncCycle действительно работает до конца, я бы посоветовал добавить что-то вроде этого сразу после команды: if (Get-ADSyncConnectorRunStatus) { Write-Warning "A sync is already in progress. Please try again later." }; else { While(Get-ADSyncConnectorRunStatus) { Start-Sleep -Seconds 5 } }; Write-Host "Azure AD Sync has finished."

Theo 31.10.2018 15:03

@Theo Да, я думал добавить паузу, действительно, синхронизация обычно происходит мгновенно, но создание почтового ящика может занять некоторое время ... Я думаю, что пауза - мой единственный вариант, но моя проблема в том, что я не знаю, как объединить три другие команды выше в один скрипт? Спасибо.

user757392 31.10.2018 15:41

Вы можете обратиться к этой ссылке: joshheffner.com/…

Bruce 02.11.2018 02:51

@ Тео, ты удалил свой комментарий отсюда? Я этого больше не вижу.

user757392 20.11.2018 15:21

Да, я удалил ответ, потому что понятия не имею, что вы на самом деле делаете с кодом. Кроме того, вы не показываете ничего из вашего 'C: \ blablabla \ filename.csv', где должны быть все данные для новых пользователей. Все, что вы комментируете, - это скрипт даже не запускается, но вы должны получать сообщения об ошибках, по крайней мере, если что-то неправильно, так что я действительно сомневаюсь ..

Theo 20.11.2018 15:43

@Тео. Блаблабла - это просто ссылка на csv на рабочем столе, в этом нет ничего плохого. И да, вот что происходит: я копирую и вставляю ваш скрипт, вношу небольшие изменения, чтобы указать, где находится мой csv, сохраняю его как ps1, а затем, когда я пытаюсь запустить его внутри расширенной ISE, абсолютно ничего не происходит. Никаких ошибок, ничего не создается, абсолютно ничего. Опять же, вы пробовали свой сценарий, он вам подходит? Если я попробую свой сценарий, как указано выше, он сработает, но ваш просто ничего не сделает, даже ошибки. Путь к CSV на рабочем столе одинаков для обоих.

user757392 21.11.2018 11:26

Кто-нибудь еще знает, как это сделать?

user757392 04.02.2019 11:56
0
9
70
0

Другие вопросы по теме