Guest User

Untitled

a guest
Nov 28th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.71 KB | None | 0 0
  1. # POST method: $req
  2. $requestBody = Get-Content $req -Raw | ConvertFrom-Json
  3. $name = $requestBody.name
  4.  
  5. # GET method: each querystring parameter is its own variable
  6. if ($req_query_name)
  7. {
  8. $name = $req_query_name
  9. }
  10. if ($req_query_ItemID)
  11. {
  12. $itemID = $req_query_ItemID
  13. }
  14. if ($req_query_URL)
  15. {
  16. $url = $req_query_Url
  17. }
  18. if ($req_query_ListTitle)
  19. {
  20. $listTitle = $req_query_ListTitle
  21. }
  22.  
  23. Out-File -Encoding Ascii -FilePath $res -inputObject "Hello $name"
  24.  
  25.  
  26. # Create Context for PowerShell Modules and User Credentials (connection to O365, O365 Admin)
  27. $FunctionName = 'AddAzureADUser'
  28.  
  29. # Define Modules
  30. $PnPModuleName = 'SharePointPnPPowerShellOnline'
  31. $PnPVersion = '2.20.1711.0'
  32. $AzureADModuleName = 'AzureAD'
  33. $AzureADVersion = '2.0.0.131'
  34. $MSOLModuleName ='MSOnline'
  35. $MSOLVersion ='1.1.166.0'
  36.  
  37. $username = $Env:user
  38. $pw = $Env:password
  39.  
  40. # Import PS modules
  41. $AzureADModulePath = "D:\home\site\wwwroot\$FunctionName\bin\$AzureADModuleName\$AzureADVersion\$AzureADModuleName.psd1"
  42. $MSOLModulePath = "D:\home\site\wwwroot\$FunctionName\bin\$MSOLModuleName\$MSOLVersion\$MSOLModuleName.psd1"
  43. $PnPModulePath = "D:\home\site\wwwroot\$FunctionName\bin\$PnPModuleName\$PnPVersion\$PnPModuleName.psd1"
  44. $res = "D:\home\site\wwwroot\$FunctionName\bin"
  45.  
  46. Import-Module $AzureADModulePath
  47. Import-Module $PnPModulePath
  48. Import-Module $MSOLModulePath
  49.  
  50. # Build Credentials
  51. $keypath = "D:\home\site\wwwroot\$FunctionName\bin\keys\PassEncryptKey.key"
  52. $pwfile = @(Get-Content $keypath)[0]
  53. $secpassword = $pw | ConvertTo-SecureString -Key $pwfile
  54. $credentials= New-Object System.Management.Automation.PSCredential ($username, $secpassword)
  55.  
  56. # Your Tenant ID
  57. $tenant = "TENANT ID"
  58.  
  59. # Connect to MSOL
  60. Connect-MsolService -Credential $credentials
  61.  
  62. # Connect to SharePoint Online Service
  63. Connect-PnPOnline -Url $url -Credentials $credentials
  64. $item = Get-PNPListItem -List Lists/$listTitle -Id $itemId
  65.  
  66. # Connect to Azure AD
  67. Connect-AzureAD -TenantId $tenant -Credential $credentials # Connect-AzureAD clears the password
  68.  
  69. # Create User
  70. if($item.FieldValues.UPN)
  71. {
  72. $PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
  73. $PasswordProfile.Password = $item.FieldValues.Password
  74. $PasswordProfile.ForceChangePasswordNextLogin = $true
  75.  
  76. if($item.FieldValues.MailAddress)
  77. {
  78. $split = $item.FieldValues.MailAddress.Split("@")
  79. $MailNickName = $split[0]
  80. }
  81.  
  82. New-AzureADUser -UserPrincipalName $item.FieldValues.UPN -DisplayName $item.FieldValues.Title -PasswordProfile $PasswordProfile -MailNickName $MailNickName -AccountEnabled $true
  83. Start-Sleep -Seconds "900"
  84.  
  85. if($item.FieldValues.UserManager)
  86. {
  87. # Get Manager Object Id from Azure AD
  88. $itemManagerEmail = $item.FieldValues.UserManager.Email
  89. #$userManagerAzure = Get-AzureADUser -ObjectId $item.FieldValues.UserManager.Email
  90. $userManagerAzure = Get-AzureADUser -Filter "OtherMails eq '$itemManagerEmail'"
  91. # Set Manager in Azure AD
  92. Set-AzureADUserManager -ObjectId $item.FieldValues.UPN -RefObjectId $userManagerAzure.ObjectId
  93. # Set Manager in SharePoint Online
  94. $userManagerSPO = Get-PnPUserProfileProperty -Account $userManagerAzure.Mail
  95. Set-PnPUserProfileProperty -Account $item.FieldValues.UPN -Property "Manager" -Value $userManagerSPO.AccountName
  96. }
  97. if($item.FieldValues.MailAddress)
  98. {
  99. Set-AzureADUser -ObjectId $item.FieldValues.UPN -OtherMails $item.FieldValues.MailAddress
  100. Set-PnPUserProfileProperty -Account $item.FieldValues.UPN -Property "WorkEmail" -Value $item.FieldValues.MailAddress
  101. }
  102. }else
  103. {
  104. Set-PnPListItem -List $listTitle -Identity $itemID -Values @{"Log" = "UPN not set correctly"}
  105. }
  106.  
  107.  
  108. if($item.FieldValues.Department)
  109. {
  110. Set-AzureADUser -ObjectId $item.FieldValues.UPN -Department $item.FieldValues.Department
  111. Set-PnPUserProfileProperty -Account $item.FieldValues.UPN -Property "Department" -Value $item.FieldValues.Department.Label
  112. }
  113. if($item.FieldValues.GivenName)
  114. {
  115. Set-AzureADUser -ObjectId $item.FieldValues.UPN -GivenName $item.FieldValues.GivenName
  116. }
  117. if($item.FieldValues.SurName)
  118. {
  119. Set-AzureADUser -ObjectId $item.FieldValues.UPN -Surname $item.FieldValues.SurName
  120. }
  121. if($item.FieldValues.Jobtitle)
  122. {
  123. Set-AzureADUser -ObjectId $item.FieldValues.UPN -JobTitle $item.FieldValues.Jobtitle
  124. Set-PnPUserProfileProperty -Account $item.FieldValues.UPN -Property "SPS-JobTitle" -Value $item.FieldValues.Jobtitle.Label
  125. }
  126. if($item.FieldValues.UsageLocation)
  127. {
  128. Set-AzureADUser -ObjectId $item.FieldValues.UPN -UsageLocation $item.FieldValues.UsageLocation
  129. }
  130.  
  131. if($item.FieldValues.License)
  132. {
  133. # STANDARDPACK = E1
  134. if($item.FieldValues.License -eq "E1")
  135. {
  136. Set-MsolUserLicense -UserPrincipalName $item.FieldValues.UPN -AddLicenses "TENANTNAME:STANDARDPACK"
  137. }
  138. # ENTERPRISEPACK = E3
  139. if($item.FieldValues.License -eq "E3")
  140. {
  141. Set-MsolUserLicense -UserPrincipalName $item.FieldValues.UPN -AddLicenses "TENANTNAME:ENTERPRISEPACK"
  142. }
  143. # STREAM = Stream
  144. if($item.FieldValues.License -eq "Stream")
  145. {
  146. Set-MsolUserLicense -UserPrincipalName $item.FieldValues.UPN -AddLicenses "TENANTNAME:STREAM"
  147. }
  148. # POWERAPPS_INDIVIDUAL_USER = PowerApps
  149. if($item.FieldValues.License -eq "PowerApps")
  150. {
  151. Set-MsolUserLicense -UserPrincipalName $item.FieldValues.UPN -AddLicenses "TENANTNAME:POWERAPPS_INDIVIDUAL_USER"
  152. }
  153. # FLOW_FREE = Flow & Logic
  154. if($item.FieldValues.License -eq "Flow")
  155. {
  156. Set-MsolUserLicense -UserPrincipalName $item.FieldValues.UPN -AddLicenses "TENANTNAME:FLOW_FREE"
  157. }
  158. # POWER_BI_STANDARD = Power BI
  159. if($item.FieldValues.License -eq "PowerBI")
  160. {
  161. Set-MsolUserLicense -UserPrincipalName $item.FieldValues.UPN -AddLicenses "TENANTNAME:POWER_BI_STANDARD"
  162. }
  163. }
Add Comment
Please, Sign In to add comment