Pages

Showing posts with label Windows PowerShell. Show all posts
Showing posts with label Windows PowerShell. Show all posts

Tuesday, February 19, 2013

Microsoft Partner Program and Office 365 Certifications


* Updated: See my update post on this topic here. *

Recently, at the Microsoft Office 365 Ignite for Partners event in Redmond, I had the good fortune to attend a session with the Microsoft Learning team behind the exams IT Pros take for certifications.  I was excited to see how they would revamp the Office 365 exams to include the new wave 15 and Office 2013 content.  I was less than thrilled by the changes they announced though.

What I found out was... the new exams and certifications would roll up Office 365 in to the core exams for the various Office 365 component products.

I'm not a fan.  The component product exams are designed for a much broader audience than Office 365.  The old Office 365 exams, 70-321 and 70-323, counted toward the MCP and MCTS certs - enabling IT Pros to certify as MCITP for Office 365.  The certification demonstrated specific qualifications around Office 365.  The tests were hard, but that was okay.  If you make a test too easy, people who don't know their stuff will take it and appear qualified where they are not.  The test probably should have been tweaked some and had some questionable items fixed however.

For more on 70-321 and 70-323, see my post last July on Office 365 Certification, Study Guide, and the Small Business Competency.

Now, Office 365 qualifications have been rolled in to the component exams for Exchange, SharePoint and Lync.  Microsoft considers "cloud" just one integrated facet of these products' software+services strategy.  The problem here is that in the cloud computing IT world of the future, the broader Exchange, SharePoint and Lync on-premises certifications include much that is not relevant to the cloud.  And "cloud" IT Pros are being forced to learn on-premises technologies they will never use in order to certify they are experts in, well, "cloud".

For instance consider Exchange 2013's 70-341 (Core Solutions of Microsoft Exchange Server 2013) exam.  The exam covers transport, the mailbox role, client access and Exchange infrastructure.  Some of transport is relevant to Office 365, in client access much of the mailbox role is not, CAS is important but DAGs are not, a good chunk of infrastructure is just not required at all.  On the whole I would say that 25-50% of the exam is relevant to Office 365 migrations and ongoing administration.  The remainder is only important if you have a legacy infrastructure to design and support.  You still have to add 70-342 as well to be certified in anything that looks like a current Office 365 certification.  The closest you can get now is a Microsoft Certified Solutions Expert: Messaging.

You could say that including cloud in the Exchange exam makes for a more comprehensive certification and more well-rounded IT Pros.  My opinion, however, is that there should be Office 365-specific exams that call out the portions of Exchange that are relevant.  Shouldn't Microsoft have a "cloud-specific" certification?

So, what is the purpose of certification anyway?  Companies use certifications to understand the qualifications of candidates for employment.  If I have an Office 365 deployment (SMB, midmarket, or enterprise) with little on-premises infrastructure... maybe a simple hybrid Exchange configuration to support legacy applications and devices... I don't need to know about Database Availability Groups (DAGs) and how to support multi-site transport scenarios.  I need to know PowerShell, basic Exchange administration and about how to manage Office 365 through the web portal.  The 74-324 test Administering Office 365 for Small Businesses covers those topics but doesn't count toward any certification... so how does an employer know you are "certified on Office 365"?

Some companies want to know if a candidate is qualified to perform Office 365 migrations.  That requires the skills in 74-324 but also more Exchange, SharePoint, Lync and Active Directory experience.  Right now, the only way to demonstrate that expertise is to take several certifications covering a much broader than necessary technical field.  You may need 25% of the SharePoint tests, 60% of Exchange, and 15% of Lync to perform migrations.  Testing on the rest is a waste of time.

In addition, Microsoft now requires competencies for the Silver and Gold partner programs.  To get your Office 365 Deployment Partner designation your company needs the Silver Messaging competency plus the Exchange 2013 70-341 and 70-342 (Advanced Solutions of Microsoft Exchange Server 2013) tests.  Office 365 migration experts won't ever need much of what's in those tests.  Why require it?  It's a burden on Partners and a waste of time.

I won't go further in to competencies and cloud programs in depth in this article.  Suffice it to say that I don't believe the requirements make a lot of sense.  Why would a partner that concentrates on Office 365 migrations certify employees in technologies required only for large enterprise on-premises infrastructure deployments?  I think the exam and learning people need to get together with the partner group and revisit what is required for Office 365 and design appropriate tests and curriculum to support just Office 365.

This means that Office 365 exams should be cross-product and function related.  There should be an Office 365 Administration course that covers cloud-relevant content for Exchange, SharePoint, and Lync.  There should be another exam on Office 365 Migration that covers Exchange hybrid, Active Directory (DirSync), identity (ADFS), mailbox migrations and SharePoint content migration.  Those tests would be truly useful to organizations and IT Pros that wanted to prove specific expertise in Office 365.

What are your thoughts on Office 365 certs versus integrated cloud in the separate product exams?  Give your opinions in the comments below.

Wednesday, May 9, 2012

Office 365 Tools

Microsoft Office 365 Logo
Much like my list of PowerShell scripts I'll be keeping track of the various good Office 365 tools I find here.

Happy Clouding!


Deployment Readiness Tool
http://community.office365.com/en-us/f/183/p/2285/8155.aspx#8155

Get-ExchangeEnvironmentReport
http://www.stevieg.org/2011/06/exchange-environment-report/

Office 365 Speed Test
http://speedtest.microsoftonline.com

Exchange Client Network Bandwidth Calculator
http://blogs.technet.com/b/omers/archive/2012/03/11/exchange-client-network-bandwidth-calculator-beta2.aspx


Exchange Connectivity Test
https://www.testexchangeconnectivity.com/

PowerShell Scripts
http://blog.quitecloudy.com/2012/05/common-office-365-powershell-scripts.html

More PowerShell Scripts - Package to Run Locally
http://www.microsoft.com/en-us/download/details.aspx?id=29568

Pre-Stage Migration Software
Office 2010 & Lync (from your portal), ADFS, DirSync (from your portal), OnlineServices PowerShell, .NET 35 SP1, Desktop Setup Wizard (from your portal)

DNS Testing Tools
GUI Tool by Justin Wyllys and www.testmyoffice365.com

3rd Party Migration Tools
Migration Wiz, MetaVis, Metalogix, Quest
Enhanced by Zemanta

Common Office 365 PowerShell Scripts

I have compiled a list of useful PowerShell Scripts for use with Office 365.  I will continue to update the list over time.  I'll list the source for any scripts that aren't directly from Microsoft or that I've written from scratch.

I hope you find these useful!

* Update 5/10/13 - added scripts for changing user principal names (UPNs) singly or in bulk in Active Directory.*
* Update 5/6/13 - added scripts for changing mailboxes to shared singly or in bulk.*
* Update 5/1/13 - added script for changing from one SKU to another.*

----------------------------------------------------------------------------------------------------------
First Time in Office 365 PowerShell per Machine
Set-ExecutionPolicy RemoteSigned
Close PowerShell Session
Remove-PSSession $session
Full Microsoft List of Office 365 Commandlets
http://onlinehelp.microsoft.com/en-us/office365-enterprises/hh125002.aspx
Thomas Ashworth's PowerShell Resources on Technet
http://blogs.technet.com/b/thomas_ashworth/
Import Contacts by CSV
$csv = Import-Csv “C:\Contacts.csv” foreach($line in $csv) {New-MailContact -Name $line.DisplayName -ExternalEmailAddress $line.EmailAddress -OrganizationalUnit “users” -Alias $line.Alias}
----------------------------------------------------------------------------------------------------------
Connect to Office 365 PowerShell
$o365cred=get-credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $o365cred -Authentication Basic -AllowRedirection
Import-PSSession $session
Grant Access to One Mailbox
After you are connected, you must run the following command to give Alan full access to Bob’s mailbox:
Add-MailboxPermission -identity Bob@domain.com -user Alan@domain.com -AccessRights FullAccess -InheritanceType All
Grant Access to All Mailboxes
If you wanted to give Alan full access to all mailboxes in your environment you would run:
Get-Mailbox | Add-mailboxpermission -user Alan@domain.com -AccessRights FullAccess
Set Send-as Permissions for Users on Groups
This grants Alan SendAs permission for Bob's mailbox:

Add-RecipientPermission Bob@domain.com -AccessRights SendAs -Trustee Alan@domain.com

or

Set-Mailbox -Identity mailbox -GrantSendOnBehalfTo user
For Example:
Add-RecipientPermission "grouptoaccess@domain.com" -AccessRights SendAs -Trustee "usertoaccess@domain.com"
(Credit How to Grant Full Access to an Office 365Mailbox)
----------------------------------------------------------------------------------------------------------
Assign Licenses via CSV Import
Connect-MsolService
Get-MsolAccountSku
That will output your sku's. Once you have that you would run a script like this:
Connect-MSOLService -Credential $adminCredential
$AccountSkuId = "sku:ENTERPRISEPACK"
$UsageLocation = "US"
$LicenseOptions = New-MsolLicenseOptions -AccountSkuId $AccountSkuId
$Users = Import-Csv c:\Users.csv
$Users | ForEach-Object {
Set-MsolUser -UserPrincipalName $_.UserPrincipalName -UsageLocation $UsageLocation
Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses $AccountSkuId -LicenseOptions $LicenseOptions
}
If you wanted to do this for everyone you would change the line:
$users | Import-Csv c:\Users.csv
to:
$users | get-msoluser -resultsize unlimited
(Credit Can I assign a license to a group of usersby PowerShell?)
----------------------------------------------------------------------------------------------------------
Assign Licenses Granularly via PowerShell
Open Microsoft Online Services Module for Windows PowerShell and connect to the service:
Get-MsolAccountSku | Format-Table AccountSkuId, SkuPartNumber
The second column in this list is referenced in the next command as [SkuPartNumber] :
$ServicePlans = Get-MsolAccountSku | Where {$_.SkuPartNumber -eq "[SkuPartNumber]"}
$ServicePlans.ServiceStatus
This returns all the service plans
Secondly you need to assign the licence to the user(s):
Set-MsolUser -UserPrincipalName user@domain.com -UsageLocation GB
Set-MsolUserLicense -UserPrincipalName user@domain.com -AddLicenses [tenantname:AccountSkuId] -LicenseOptions $MyO365Sku
Repeat for any other licences you want to apply for other users or other licence options you want to apply to this user.
(Credit Granular license assignment from PowerShell)
----------------------------------------------------------------------------------------------------------
Change Licenses from One SKU to Another via PowerShell
This script will identify all users with one SKU assigned and replace that SKU with a different one.  To test, change the "$Users = " variable assignment.

Be careful - removing licenses rather than replacing them correctly will de-provision user services and delete data.

  1. Connect to Microsoft Online Service PowerShell
  2. Set the variables for the SKU you want to replace and the one you want to add
  3. Change your UseageLocation and MaxResults if necessary
  4. Run the script
Connect-MSOLService -Credential $adminCredential
$AccountSkuRemove = "STANDARDPACK"
$AccountSkuId = ":ENTERPRISEPACK"
$UsageLocation = "US"
$LicenseOptions = New-MsolLicenseOptions -AccountSkuId $AccountSkuId
$Users = Get-MsolUser -MaxResults 50000 | Where-Object {$_.licenses[0].AccountSku.SkuPartNumber -eq $AccountSkuRemove -and $_.IsLicensed -eq $True}
$Users | ForEach-Object {Set-MsolUser -UserPrincipalName $_.UserPrincipalName -UsageLocation $UsageLocation Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses $AccountSkuRemove -AddLicenses $AccountSkuId -LicenseOptions $LicenseOptions}
----------------------------------------------------------------------------------------------------------
Convert Mailboxes to Shared Mailboxes - For Single Mailboxes
1. Start by checking your mailbox to see if it is under the 5 GB shared mailbox limit:
Get-MailboxStatisics | FL Total*
2. Change the mailbox type to shared:
Set-Mailbox -Identity -Type “Shared” -ProhibitSendReceiveQuota 5GB -ProhibitSendQuota 4.75GB -IssueWarningQuota 4.5GB
3. Add Full Access permissions to the mailbox - gives access to the contents of the mailbox:
Add-MailboxPermission -Identity -User -AccessRights FullAccess -InheritanceType All
4. Add Send As permissions to the mailbox - allows a user to send as if they were the mailbox itself:
Add-RecipientPermission -Identity -Trustee -AccessRights SendAs -Confirm:$false
5. Remove the user license from the mailbox
$MSOLSKU = (Get-MSOLUser -UserPrincipalName ).Licenses[0].AccountSkuId
 Set-MsolUserLicense -UserPrincipalName -RemoveLicenses $MSOLSKU

Convert Mailboxes to Shared Mailboxes in Bulk
1. Ensure that all mailboxes are under the 5 GB limit.
2. Create an input.csv file in c:\temp with the following format:
userPrincipalName
User1@domain.com
User2@domain.com
User3@domain.com
3. Run the following script in PowerShell:
Import-csv C:\temp\input.csv | foreach {
 $UPN = $_.userPrincipalName
 Set-Mailbox $UPN -Type “Shared” -ProhibitSendReceiveQuota 5GB -ProhibitSendQuota 4.75GB -IssueWarningQuota 4.5GB
 $MSOLSKU = (Get-MSOLUser -UserPrincipalName $UPN).Licenses[0].AccountSkuId
 Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $MSOLSKU
 }
(Credit Office 365 – Converting mailboxes to shared mailboxes)
----------------------------------------------------------------------------------------------------------
Both of these scripts Alter the UPN Suffix for users.  They will both require you to open PowerShell and run the following command first:
import-module activedirectory
Change the UPN Suffix for a Single User, Search by SAM Account Name
Get-ADUser -Filter {SamAccountName -eq ""} | ForEach-Object ($_.SamAccountName) {$CompleteUPN = $_.SamAccountName + "@"; Set-ADUser -Identity $_.DistinguishedName -UserPrincipalName $CompleteUPN}
How to use it: replace with the user's SAM account name from Active Directory Users and Computers on the Account page and replace with the desired UPN suffix in the format of domain.com.
Change the UPN Suffix for All Users in an OU
Get-ADUser -SearchBase "ou=,dc=,dc=" -SearchScope OneLevel -filter * | ForEach-Object ($_.SamAccountName) {$CompleteUPN = $_.SamAccountName + "@"; Set-ADUser -Identity $_.DistinguishedName -UserPrincipalName $CompleteUPN}
How to use it: replace and with the OU path that contains the user accounts you wish to modify and replace with the desired UPN suffix in the format of domain.com.

Test Before You Run Your Scripts!
If you wish to test your scripts before running them (you should!) you can replace the final "$CompleteUPN}" with "$CompleteUPN -whatif}" and then run the script.  If the script doesn't work you will get no return output.  If it does, you'll be presented with something like this for all affected users:
What if: Performing operation "Set" on Target "CN=,OU=,DC=,DC=".

You can also test that you are affecting the correct user accounts by changing the end of the script.  Replace everything from the pipe | to the end with the following:

| FT -property name,userprincipalname

You'll be presented a table with the affected users' full names and UPNs.


Enhanced by Zemanta
Related Posts Plugin for WordPress, Blogger...