Kategoriarkiv: Powershell

Vanliga Office 365 (mail) migreringsproblem och hur man löser dem.

Ska du migrera från en IMAP server och inte en Exchange så kan det vara värt att skruva upp maxstorleken på e-postmeddelandena som skall migreras. Standard just nu är 35 MB. Migrerar man från Exchange servrar brukar det sällan finnas stora e-post meddelanden eftersom där är det oftast satt en låg nivå innan på hur stora e-posten meddelanden som man får ta emot.

Hur man skruvar upp storleken på mail som får migreras finns instruktioner här:

http://www.michev.info/Blog/Post/1060/maximum-message-size-increased-to-150mb-for-all-types-of-migration-to-exchange-online

Skulle det dyka upp problem med meddelanden som inte vill migreras över även fast man skruvat upp storleken kan man höja gränserna lite för hur många felaktiga meddelanden som får hoppas över innan migreringen fallerar.

För att höja gränsen till t.ex. 10 st e-post meddelanden (egentligen items) som får vara för stora skriver man såhär: Set-MigrationBatch ‘Namnpåmigreringsbatch’ -LargeItemLimit 10

För att höja gränsen till 50 st st e-post meddelanden (egentligen items) som får vara korrupta skriver man såhär: Set-MigrationBatch ‘Namnpåmigreringsbatch’ -BadItemLimit 50

 

Set-Migrationbatch instruktioner:
https://technet.microsoft.com/en-us/library/jj218662(v=exchg.160).aspx

IMAP – bra att veta:
https://support.office.com/en-us/article/What-you-need-to-know-about-migrating-your-IMAP-mailboxes-to-Office-365-3fe19996-29bc-4879-aab9-5a622b2f1481?ui=en-US&rs=en-US&ad=US

Spärra åtkomst och dölja vissa tjänster i Office 365.

Ibland köper kunden t.ex. en Business Premium men vill inte att användarna ska ha tillgång till alla funktioner som t.ex. Sway, Sharepoint, OneDrive, Powerapps, Dynamics 365 med mera.

Smidigast att ordna till detta är via powershell.

Först måste man sätta så alla användare får en användarplats eller usagelocation:
Get-MsolUser -All | where {$_.UsageLocation -eq $null} | Set-Msoluser -UsageLocation SE

Sedan får vi lägga till de användarnas UPN som ska ha t.ex. Business Premium licensen rakt upp och ner i en TXT fil och sedan skriva:
Get-Content “C:\Temp\upn.txt” | foreach {Set-MsolUserLicense -UserPrincipalName $_ -AddLicenses reseller-account:O365_BUSINESS_PREMIUM}

För att se vilka licenser du har tillgång till skriver du: Get-MsolAccountSku

Sedan får du skapa en ny licensoption där du lägger till de tjänsterna som användarna inte ska ha tillgång till:
$LO = New-MsolLicenseOptions -AccountSkuId “reseller-account:O365_BUSINESS_PREMIUM” -DisabledPlans “FLOW_O365_P1”, “POWERAPPS_O365_P1”, “TEAMS1”, “PROJECTWORKMANAGEMENT”, “SWAY”, “SHAREPOINTWAC”, “YAMMER_ENTERPRISE”

Denna här ovanför gör detta:

För att slutligen ändra tjänsterna på användarna:
Get-Content “C:\Temp\upn.txt” | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $LO}

Man kan även dölja själva OneDrive och Sharepoint ikonen för användarna utan att inaktivera tjänsterna. Då går man till Admin Center > Sharepoint > Inställningar > Visa eller dölj alternativ.
“Webbplatser” är Sharepoint.

Mer att läsa om detta:
Assign licenses to user accounts with Office 365 PowerShell
https://technet.microsoft.com/en-us/library/dn771770.aspx

View licenses and services with Office 365 PowerShell
https://technet.microsoft.com/sv-se/library/dn771773.aspx

View account license and service details with Office 365 PowerShell
https://technet.microsoft.com/sv-se/library/dn771771.aspx

Disable access to services with Office 365 PowerShell
https://technet.microsoft.com/sv-se/library/dn771769.aspx

Ändra i en annans användares kalenderhändelse

Fick en för mig ovanlig förfrågan från en kund.
Oftast vill mina kunder bara se varandras kalendrar men nu ville även en användare gå in och ändra i en annan användares kalender och naturligtvis även kunna se allt i den kalendern.
För att försöka hålla nere rättigheterna så att användarens t.ex. inte kan skapa en massa aktiviteter så löste jag det såhär…

Personen som ska kunna ändra i Rutgers kalender har användarnamn Klas.
Så kan man lösa det såhär:

Set-MailboxFolderPermission -Identity Rutger:\Kalender -User Klas -AccessRights EditAllItems,ReadItems,FolderVisible

För att se om det har fungerat kör man detta:

Get-MailboxFolderPermission -Identity Rutger:\Kalender

Finns det inga rättigheter på Rutgers kalender för Klas måste vi istället köra Add-MailboxFolderPermission.

Källor: https://technet.microsoft.com/en-us/library/dd298062(v=exchg.160).aspx
https://technet.microsoft.com/en-us/library/ff522363(v=exchg.160).aspx

O365: Avaktivera TNEF / RTF som orsakar winmail.dat

Som ett envist virus som det inte finns något botemedel till dyker det ibland upp folk som klagar på att de får bifogade filer som heter winmail.dat .

Så länge man kör Microsoftprodukter är inte detta ett problem. Men tyvärr, vi som jobbar i verkligheten vet att alla i hela världen inte kör Microsoftprodukter.

Som tur är finns det två olika sätt att stänga av detta pisset som kallas för TNEF eller som det står i Outlook klienten RTF.

För att avaktivera skiten med Powershell på Office 365:
Set-RemoteDomain Default -TNEFEnabled $false

För att avaktivera pisset via administrationscentret:
Admin > Exchange > Fjärrdomäner > dubbeklicka på Default .
Välj sedan under Använd RTF-format: Aldrig

Borde vara en standardinställning….

Segmentera adressboken i Office 365 / Exchange Online

Jobbar man med t.ex. skolor eller lite större företag kan det finnas önskemål om att segmentera adressboken. Finns lite olika sätta att göra detta på. Just detta exemplet är användbart när man jobbar med skolor och vill att varje klass ska ha sin egen adressbok.

Börja med att ansluta till Office 365 / Exchange Online med Powershell.
Sedan måste vi aktivera adressbokspolicy routing.
För att göra detta skriver man:

Set-TransportConfig -AddressBookPolicyRoutingEnabled $true

För att kolla så det gick igenom så skriver man:

Get-TransportConfig | fl AddressBookPolicyRoutingEnabled

 

För att få rättighet att ändra och skapa adresslistor måste man lägga till rollen “Address Lists” i säkerhesgruppen “Organization Management”.
För att göra detta skriver man:

New-ManagementRoleAssignment -SecurityGroup “Organization Management” -Role “Address Lists”

 

När man ska segmentera adressboken måste man ha något att filtrera på. Smidigast att filtrera saker på är customattribute i Exchange. I detta fallet har vi inte satt något customattribute på användarna när vi la upp dem. Däremot har vi satt den klassen de går i (KlassB i detta exemplet) som “Department”.

För att få över “Department” till “CustomAttribute1” så skriver vi följande:

Get-MsolUser  |  ForEach { Set-Mailbox $_.UserPrincipalName -CustomAttribute1 $_.Department }

 

För att skapa adresslistor, adressböcker, adressbokspolicys för en klass som heter “KlassB” skriver vi följande:

New-AddressList -Name ‘KlassB_All’ -ConditionalCustomAttribute1 “KlassB” -IncludedRecipients AllRecipients

New-AddressList -Name KlassB_Contacts -ConditionalCustomAttribute1 “KlassB” -IncludedRecipients MailContacts

New-AddressList -Name KlassB_Recources -ConditionalCustomAttribute1 “KlassB” -IncludedRecipients Resources


New-GlobalAddressList -Name KlassB_GAL -ConditionalCustomAttribute1 “KlassB” -IncludedRecipients AllRecipients


New-OfflineAddressBook -Name KlassB_OAB -AddressLists KlassB_GAL


New-AddressBookPolicy -Name KlassB_ABP -AddressLists KlassB_All, KlassB_Contacts -OfflineAddressBook KlassB_OAB -GlobalAddressList KlassB_GAL -RoomList KlassB_Recource
s

 

För att sedan lägga på adressbokspolicyn som vi skapade med kommandot New-AddressBookPolicy här ovanför till användarna som har “KlassB_ABP” satt till CustomAttribte1 skriver vi:

Get-Mailbox -resultsize unlimited | where {$_.CustomAttribute1 -eq “KlassB”} | Set-Mailbox -AddressBookPolicy “KlassB_ABP”

Sedan gör man samma sak för KlassA, KlassC och så vidare.
Sätter man ingen adressbokspolicy på användarna så kommer de att se alla adressböcker.

Vill man ha en adressbokspolicy för t.ex. lärare, adminstratörer och så vidare som ska kunna se alla så gör man såhär:

New-AddressBookPolicy -Name “Larare_ABP” -AddressLists “KlassA_All”,”KlassA_Contacts”,”KlassB_All”,”KlassB_Contacts”,”All Groups”,”All Contacts”,”All Distribution Lists”,”All Rooms”,”All Users” -OfflineAddressBook “\Default Offline Address Book” -GlobalAddressList “\Default Global Address List” -RoomList “\All Rooms”

Sedan får man naturligtvis tilldela denna nya adressbokspolicyn till de användarna som ska ha den.

 

Källor: http://www.flexecom.com/gal-segmentation-in-office-365/
http://www.testlabs.se/blog/?p=3936

Och en kollega som kunde detta sedan innan. .

Ladda upp filer till O365 / Sharepoint online

Denna guiden laddar upp filerna i teamsiten (förstasidan) på Sharepoint online i biblioteket som skapats som standard i Office 365. Med hjälp av den nya import tjänsten i Office 365. Den lägger filerna i undermappen “Migrering” (undermappen måste du skapa själv i Sharepoint Online)

1. Logga in på Office 365 portalen.
Klicka på Admin och sedan på IMPORT.
Tryck på plustecknet > ladda upp filer via nätverket
Under punkt 2 tryck på följande:
“Visa nyckel” eller skapa nyckel om du inte skapat en sedan innan
“Visa URL för Sharepoint-/OneDrive för företag-dokument” eller skapa nyckel om du inte skapat en sedan innan

 

2. Se till så denna är installerad på din dator (Sharepoint management shell): http://www.microsoft.com/en-us/download/details.aspx?id=35588
Anslut till Office 365 via Powershell.

Skriv detta: Import-Module Microsoft.Online.SharePoint.PowerShell

 

3. Anslut mot Sharepoint:
(URL hittar du när du går till O365 Admin > Sharepoint. Den första delen av URL:en är dit du ska ansluta, exempel här nedanför).

Connect-SPOService -Url https://foretagetab-admin.sharepoint.com/

Logga in med O365 admin kontot om du får upp inloggningsruta. Eller om du ändrat rättigheterna i Sharepoint Online loggar du in med det adminkontot.

 

4. För att skapa ett nytt Sharepoint Online paket som vi ska konvertera och sedan ladda upp:

New-SPOMigrationPackage -SourceFilesPath \\SMBUTDELNING\spmigration -OutputPackagePath C:\SPO_Package -IncludeFileSharePermissions -TargetWebUrl https://foretagetab.sharepoint.com -TargetDocumentLibraryPath “Shared Documents”  -TargetDocumentLibrarySubFolderPath migrering -NoAdLookup

Noteringar:
-SoucreFilesPath är sökvägen till källfilerna som ska laddas upp. Måste vara en nätverkssökväg.
-OutputPackagePath är där Sharepoint Online paketet sparas
-TargetDocumentLibraryPath namnet på dokumentbiblioteket i SharePoint (heter som standard “Shared Documents” eller “Delade Dokument” beroende på vilket språk du kör).
-TargetDocumentLibrarySubFolderPath Undermappens namn
-NoAdLookup hoppar över att kontakta AD/LDAP servrar för att få ut användare och grupper som har rättigheter till filen
-IncludeFileSharePermission inkluderar rättigheter som sedan appliceras när filerna laddats upp. OBS fungerar bara om du har Azure AD koppling mot ditt on-prem AD.

 

5. Konvertera sedan paketet så det stöds av SPO för att utföra jobbet

ConvertTo-SPOMigrationTargetedPackage -SourceFilesPath \\SMBUTDELNING\spmigration -SourcePackagePath C:\SPO_Package -OutputPackagePath C:\SPO_Package\targetedPackage -TargetWebUrl https://foretagetab.sharepoint.com -TargetDocumentLibraryPath “Shared Documents” -TargetDocumentLibrarySubFolderPath migrering

 

6.  Ladda upp paketet/filerna till Azure Storage

$azurelocations = Set-SPOMigrationPackageAzureSource -SourceFilesPath \\SMBUTDELNING\spmigration -SourcePackagePath C:\SPO_Package -AccountName ab39024823032c -AccountKey “posajfposajaosijfaOSIJASDOIJSAODIJaoiJDOIASJD90384320948+432” -PackageContainerName package1

Noteringar: 
-AccountName är kontonamnet i Azure Storage tjänsten. Detta får man ut genom att ta det som jag har fetmarkerat i den adressen som du tidigare plockade ut från när du tryckte på “Visa URL för Sharepoint-/OneDrive för företag-dokument” i steg 1: https://ab39024823032c.blob.core.windows.net
-AccountKey är nyckeln som du plockade när du tryckte på “Visa nyckel” i steg 1

 

7. Tanka hem Azure Storage Explorer från denna sidan: https://azurestorageexplorer.codeplex.com/
Logga in med dina uppgifter från steg 6. (Användarnamn: ab39024823032c  Lösenord: “posajfposajaosijfaOSIJASDOIJSAODIJaoiJDOIASJD90384320948+432”
Där kan du kolla när och om filerna laddas upp, samt få ut SPFilecontainer som behövs i nästa steg.

spfilecontainer

 

8. Efter du har laddat upp filerna i Azure Storage så måste du ladda in dem i Sharepoint.
Till detta behövs en SPO mapping file.
Den ska se ut såhär (kommaseparerad):
SPfilecontainer är mappnamnet i Azure Storage Explorer dit filerna laddats upp.
SPManifestContainger är PackageContainerName i $azurelocations kommandot

Workload

FilePath

Name

Mailbox

IsArchive

TargetRootFolder

SPFileContainer

SPManifestContainer

SPSiteUrl

Sharepoint

76e63543543

315454d-b354354e57-454654d-95646542-514654654-file

Package1

https://foretagetab.sharepoint.com

För att ladda in dem i Sharepoint: logga in i Office 365 portalen gå till Admin klicka på IMPORT.
Klicka på plustecknet > ladda upp filer via nätverket
Se till så att du har bockat för “Jag har laddat upp filerna” och “Jag har åtkomst till mappningsfilen”.
Klicka på Nästa, namnge jobbet med valfritt namn, klicka på Nästa, ladda upp din SPO mapping file genom att klicka på plustecknet.
Klicka sedan på slutför och luta dig tillbaka och se på när filerna laddas in i Sharepointen.

Man kan även använda SPFileZIlla för att ladda upp filer till SharePoint.
Du hittar det programmet här: https://spfilezilla.codeplex.com/

Källor:
http://www.learningsharepoint.com/2015/09/22/step-by-step-migrate-files-to-sharepoint-online-office-365-import-service/

http://blogs.technet.com/b/nishants/archive/2015/07/19/using-windows-powershell-cmdlets-for-sharepoint-online-o365-spo-migration.aspx

http://www.learningsharepoint.com/2015/09/22/new-spomigrationpackage-error-while-fatal-exception-found-the-server-could-not-be-contacted-the-ldap-server-is-unavailable/

Fix för fenomenet att skickade objekt från en delad maillåda hamnar i användarens skickade låda i O365

När en användare skickar mail från en delad maillåda så hamnar det i användarens skickat mapp istället för på den skickade maillådan som standard.

Microsoft har nu ordnat en fix på detta.
Det den gör är att den även lägger en kopia på det skickade mailet i skickat mappen på den delade maillådan. Så mailet kommer alltså att ligga både under skickat i den delade maillåda och i användarens skickat.

Det finns två olika scenarier när man skickar från en delad maillåda. Antingen skickar man som avsändaren (Sent As) eller också skickar man på uppdrag av avsändaren (SendOnBehalf).

För att se om funktionen är påslagen eller avslagen skriver vi detta:
Get-Mailbox -Identity <info@foretaget.se>  | Select-Object MessageCopyForSentAsEnabled,MessageCopyForSendOnBehalfEnabled

För att slå på funktionen skriver vi detta:
set-mailbox <info@foretaget.se> -MessageCopyForSentAsEnabled $True
set-mailbox <info@foretaget.se> -MessageCopyForSendOnBehalfEnabled $True

För att slå av funktionen så skriver vi detta:
set-mailbox <info@foretaget.se> -MessageCopyForSentAsEnabled $False
set-mailbox <info@foretaget.se> -MessageCopyForSendOnBehalfEnabled $False

 

Källa: http://blogs.technet.com/b/exchange/archive/2015/03/03/want-more-control-over-sent-items-when-using-shared-mailboxes.aspx

Script som listar och ansluter till en kunds tenat som du har delegerade administrationsrättigheter till.

Är du partner till Microsoft och har lagt till Partner knappen till din Office 365 tenant så vet du att du kan administrera kunders tenants via din Office 365 portal.

Man kan även administrera sina kunder med powershell. Det vanligaste sättet brukar vara att göra såhär: http://darrenmyher.com/2012/11/21/office-365-how-to-run-powershell-commands-on-behalf-of-your-customers/
Problemet med det är att du måste skriva -tenantID $tenID efter varje kommando vilket är lite jobbigt.

Gör du såhär istället så kan du köra på precis som om det vore din egen tenant:

#Connect to MSOnline with password prompt
$LiveCred = Get-Credential
Import-Module msonline
Connect-MsolService -Credential $LiveCred

#List your customers and sort by name
Get-MsolPartnerContract | Select-Object Name,DefaultDomainName | Sort Name
#Asks for the customer domain that you want’s do manage.
$customerdomain = Read-Host ‘

Wich customer tenant do you want do manage?’

#Connects to the customers MSOL och EXO with your credentials
Connect-MSOLservice –Credential $LiveCred
$MSOLTenantid = (get-msolpartnercontract -domain $customerdomain).tenantid.guid

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/PowerShell-LiveID?DelegatedOrg=$customerdomain -Credential $LiveCred -Authentication Basic –AllowRedirection

Import-PSSession $Session

Källor: https://community.office365.com/en-us/f/148/t/55940 och http://blogs.technet.com/b/isantp1/archive/2015/05/20/office365-partner-admin-center-and-its-powershell-secrets.aspx

Sätta granskare som standard på alla användares kalendrar i O365.

Ibland vill vissa kunder inte att man ska behöva dela ut sin kalender för att andra ska kunna titta på den. Utan att man helt enkelt ska kunna öppna en kollegas kalender utan att behöva skicka massa delningsförfrågningar.

För att göra det på en användare så skriver man såhär:
Set-MailboxFolderPermission -Identity “MailboxID:\Kalender” -User default -AccessRights Reviewer

Via powershell kan man sätta så att standardutdelningen på alla användares kalender är “Reviewer”, så har man löst problemet:

foreach($user in Get-Mailbox -RecipientTypeDetails UserMailbox) {
$cal = $user.alias+”:\Kalender”
Set-MailboxFolderPermission -Identity $cal -User Default -AccessRights Reviewer
}

För att se så det har fungerat skriv:

Get-MailboxFolderPermission -Identity användare:\Kalender

Då ska du få ut detta:

FolderName User AccessRights
———- —- ————
Kalender Standard {Reviewer}
Kalender Anonymous {None}

Under användare standard står det “{Reviewer}”

Tänk på att “:\Kalender” kan heta t.ex. “:\Calendar” om användaren har engelskt språk inställt.

Tänk även på att du inte kan göra detta via delegerad admin utan måste logga in med en dedikerad admin mot just den tenanten.

Källa: https://community.office365.com/en-us/f/148/t/279982

Ändra tidszon, språk, datumformat och standardmapparnas namn i Outlook Web App / Outlook för en användare.

Ibland kan det blir lite jobbigt rent språkmässigt i Office 365. Har man fått fel språk på sin Inkorg, Utkorg, Skickat, Skräppost osv finns det i Office 365 sätt att byta detta.
Användaren kan göra det själv genom att följa de här stegen:

  1. Log on to Outlook Web App by using your credential.
  2. Click Options, and then click See All Options.
  3. Click Settings, and then click Regional.
  4. On the Regional Settings page, change the language, select the date and time format that you want to use, and then select the Rename default folders so their names match the specified language option.
  5. Click Save, and then exit Outlook Web App.
  6. Restart Outlook.

Ibland vill man som administratör göra det åt användaren, eller ifall man har en delad maillåda som man själv inte har rättigheter till så kan man göra detta via powershell.

För att ändra tidszonen, språk, datumformat och standarmapparnas till svenska standarder via powershell för maillådan “info” skriver man följande i powershell:

Set-MailboxRegionalConfiguration -Identity info -TimeZone “W. Europe Standard Time” -Language sv-SE -LocalizeDefaultFolderName:$true -DateFormat “yyyy-MM-dd” -TimeFormat “HH:mm”

Får du detta felmeddelandet:

The localization operation of the default folders of mailbox “info” failed:Det går inte att hitta standardmappen.
+ CategoryInfo : InvalidOperation: (anders.stormats:MailboxIdParameter) [Set-MailboxRegionalConfiguration], InvalidOperationException
+ FullyQualifiedErrorId : [Server=HE1PR06MB1113,RequestId=761af6a6-3b5d-4714-9240-b56b1215a57d,TimeStamp=2015-06-02 09:59:56] [FailureCategory=Cmdlet-InvalidOperationException] 948A68CD
,Microsoft.Exchange.Management.StoreTasks.SetMailboxRegionalConfiguration
+ PSComputerName : outlook.office365.com

Så har du troligtvis en mapp som den inte kan döpa om. Kan vara att t.ex. Outlook skapat någon mapp som heter Skräppost och då krockar det när O365 försöker döpa om mappen Junk till Skräppost. Lösningen är att ta bort mappen som heter t.ex. Skräppost och sedan köra kommandot igen. Den döper dock om de mapparna som går att döpa om, trots felmeddelandet.

Källor: http://community.office365.com/en-us/f/158/t/269232.aspx och https://support.microsoft.com/en-us/kb/2826855