-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMaillistSynk_local.ps1
252 lines (214 loc) · 8.72 KB
/
MaillistSynk_local.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
#Requires -Version 5.1
#Requires -Modules @{ ModuleName="Office365-Scoutnet-synk"; ModuleVersion="2.0" }
# Lämplig inställning i Azure automation.
$ProgressPreference = "silentlyContinue"
# Aktiverar Verbose logg. Standardvärde är silentlyContinue
$VerbosePreference = "Continue"
# Vem ska mailet med loggen skickas ifrån. Byt ut till en adress som du har i din domän.
# Måste vara samma användare som loggar in.
$LogEmailFromAddress = "admin@scoutkåren"
# Vem ska mailet med loggen skickas till. Byt ut till en adminadress eller grupp.
$LogEmailToAddress = "admin@scoutkåren"
# Rubrik på mailet.
$LogEmailSubject = "Maillist sync log"
# Konfiguration av modulen.
# Licenser för nya användare.
# Exemplet nedan lägger in licenserna STANDARDPACK och FLOW_FREE. På STANDARDPACK applikationerna "YAMMER_ENTERPRISE", "SWAY","Deskless","POWERAPPS_O365_P1" avstängda.
# För att lista lisenser kör `Get-MgSubscribedSku -All | Format-List`
$LicenseAssignment=@{
"STANDARDPACK" = @(
"YAMMER_ENTERPRISE", "SWAY","Deskless","POWERAPPS_O365_P1");
"FLOW_FREE"= @()
}
# Skapa ett konfigurationsobjekt och koppla licenshantering och vilken scoutnet maillist som hanterar användarnas konton.
# Byt ut maillist id till ID som matchar ledarna. Ta bort parametern -UserSyncMailListId om du vill att
# alla medlemmar med roller ska få ett konto.
$conf = New-SNSConfiguration -LicenseAssignment $LicenseAssignment -UserSyncMailListId "0000"
# Vem ska mailet till nya användare skickas ifrån. Byt ut till en adress som du har i din domän.
# Måste vara samma användare som loggar in.
$conf.EmailFromAddress = "admin@scoutkåren"
# Domännam för scoutkårens office 365.
$conf.DomainName = "scoutkåren.se"
# Hashtable med id på Office 365 distributionsgruppen som nyckel.
# Distributions grupper som är med här kommer att synkroniseras.
$conf.MailListSettings = @{
"utmanarna" = @{ # Namet på distributions gruppen i office 365. Används som grupp ID till Get-DistributionGroupMember.
"scoutnet_list_id"= "0001"; # Listans Id i Scoutnet.
"scouter_synk_option" = ""; # Synkoption för scouter. Giltiga värden är p,f,a eller tomt.
"ledare_synk_option" = "@"; # Synkoption för ledare. Giltiga värden är @,-,t eller &.
"email_addresses" = "",""; # Kommaseparerad lista med e-postadresser.
"ignore_user" = ""; # Kommaseparerad lista med ScoutnetId som inte ska med i listan.
};
"aventyrarna" = @{
"scoutnet_list_id"= "0002";
"scouter_synk_option" = ""; # Alla adresser
"ledare_synk_option" = "@"; # Bara office 365 adresser
"email_addresses" = "";
};
"upptackare" = @{
"scoutnet_list_id"= "0004";
"scouter_synk_option" = ""; # Alla adresser
"ledare_synk_option" = "@"; # Bara office 365 adresser
"email_addresses" = "";
};
"sparare" = @{
"scoutnet_list_id"= "0005";
"scouter_synk_option" = ""; # Alla adresser
"ledare_synk_option" = "@"; # Bara office 365 adresser
"email_addresses" = "";
}
}
# Gruppnamn för alla ledare. Gruppen måste skapas i office 365 innan den kan användas här.
$conf.AllUsersGroupName='ledare'
# Rubrik för mailet till ny användare. Skickas till användarens primära e-postadress i Scoutnet.
$conf.NewUserEmailSubject="Ditt office 365 konto är skapat"
# Texten i mailet till ny användare. Skickas till användarens primära e-postadress i Scoutnet.
# Delarna <DisplayName>, <UserPrincipalName> och <Password> byts ut innan mailet skickas.
$conf.NewUserEmailText=@"
Hej <DisplayName>!
Som ledare i scoutkåren så får du ett mailkonto i scoutkårens Office 365.
Kontot är bland annat till för att komma åt scoutkårens gemensamma dokumentarkiv .
Du får även en e-post adress <UserPrincipalName> som du kan använda för att skicka mail i kårens namn.
Ditt användarnamn är: <UserPrincipalName>
Ditt temporära lösenord är: <Password>
Lösenordet måste bytas första gången du loggar in.
Du kan logga in på Office 365 på https://portal.office.com för att komma åt din nya mailbox.
Mvh
Scoutkåren
"@
# Rubrik för e-brevet som skickas till användarens nya e-postadress.
$conf.NewUserInfoEmailSubject="Välkommen till scoutkårens Office 365"
# Texten för e-brevet som skickas till användarens nya e-postadress.
$conf.NewUserInfoEmailText=@"
Hej <DisplayName>!
Som ledare i scoutkåren har du nu fått ett konto i scoutkårens Office 365.
Kontot är bland annat till för att komma åt scoutkårens gemensamma dokumentarkiv som finns i sharepoint.
Du har en e-post adress <UserPrincipalName> som du kan använda för att skicka mail i kårens namn.
Länkar som är bra att hålla koll på:
Scoutnet: https://www.scoutnet.se
Mvh
Scoutkåren
"@
# Texten i det automatiska svaret, om man skickar brev till medlem som slutat.
# Ta bort hela parametern om du inte vill ha ett automatiskt svar för medlemmar som slutat.
$conf.DisabledAccountsAutoReplyText=@"
<html><body>
<DisplayName> är inte längre medlem i scoutkåren.<br>
Mvh<br>
Scoutkåren
</body></html>
"@
# Standardsignatur för nya användare. Textvariant.
$conf.SignatureText=@"
Med vänliga hälsningar
<DisplayName>
"@
# Standardsignatur för nya användare. Html variant.
$conf.SignatureHtml=@"
<html>
<head>
<style type="text/css" style="display:none">
<!--
p {margin-top:0; margin-bottom:0}
-->
</style>
</head>
<body dir="ltr">
<strong style="">
<span class="ng-binding" style="color:rgb(00,00,00); font-size:12pt;">Med vänliga hälsningar</span>
</strong>
<br style="">
<br style="">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#005496; font-family:Verdana">
<table cellpadding="0" cellspacing="0" style="border-collapse:collapse; border-spacing:0px; background-color:transparent; font-family:Verdana,Helvetica,sans-serif">
<tbody style="">
<tr style="">
<td valign="top" style="padding:0px 0px 6px; font-family:Verdana; vertical-align:top">
<strong style="">
<span class="ng-binding" style="color:rgb(00,54,96); font-size:14pt; font-style:italic"><DisplayName></span>
</strong>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
"@
# Här börjar själva skriptet.
Remove-Item -Path $conf.LogFilePath
# Skapa credentials för Scoutnet API och för Office 365.
try
{
# Användarnamn för Scoutnets API. Användarnamnet är Kår-ID för webbtjänster som står på sidan Webbkoppling.
$UserName = "000000"
# Credentials för Scoutnets API api/group/customlists
$apiNyckel = ConvertTo-SecureString -String "ApiNyckel" -AsPlainText -Force
$conf.CredentialCustomlists = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($UserName, $apiNyckel) -ErrorAction "Stop"
# Credentials för Scoutnets API api/group/memberlist
$apiNyckel = ConvertTo-SecureString -String "ApiNyckel" -AsPlainText -Force
$conf.CredentialMemberlist = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($UserName, $apiNyckel) -ErrorAction "Stop"
}
Catch
{
Write-SNSLog -Level "Error" "Kunde inte hämta skapa credentials. Error $_"
throw
}
try
{
# Logga in på office 365
Connect-SnSOffice365 -Configuration $conf -ErrorAction "Stop"
}
Catch
{
Write-SNSLog -Level "Error" "Kunde logga in på office 365 Error $_"
throw
}
# Kör updateringsfunktionen.
try
{
# Först uppdatera användare.
Invoke-SNSUppdateOffice365User -Configuration $conf
}
Catch
{
Write-SNSLog -Level "Error" "Kunde inte köra uppdateringen av användare. Fel: $_"
}
try
{
# Sen uppdatera maillistor.
$NewValidationHash, $mailListData = SNSUpdateExchangeDistributionGroups -Configuration $conf -ValidationHash "Tom" -ReturnMaildata
}
Catch
{
Write-SNSLog -Level "Error" "Kunde inte köra uppdateringen av distributionsgrupper. Fel: $_"
}
$bodyData = Get-Content -Path $conf.LogFilePath -Raw -Encoding UTF8 -ErrorAction "Continue"
$params = @{
Message = @{
Subject = $LogEmailSubject
Body = @{
ContentType = "Text"
Content = $bodyData
}
ToRecipients = @(
@{
EmailAddress = @{
Address = $LogEmailToAddress
}
}
)
}
SaveToSentItems = "false"
}
Send-MgUserMail -UserId $LogEmailFromAddress -BodyParameter $params
try
{
# Logga ut ifrån ExchangeOnline.
Disconnect-SnSOffice365
}
Catch
{
Write-SNSLog -Level "Error" "Utloggning ifrån ExchangeOnline returnerade felet $_"
throw
}