For some projects, we used with the scheduled task and PnP-PowerShell for site provisioning (like TimerJob, but we won’t use farm solution) on SharePoint On-Premises. Now I would like to check if it is easy to migrate from SharePoint On-Premises to SharePoint Online without significant change for the existing PowerShell scripts.
The solution is Azure Automation because it can be added to the module “SharePointPnPPowerShellOnline” and support PowerShell-script. This Azure Automation is an excellent condition without significant effort for migration.
Preparation
- Account for Azure
- Download a PowerShell script https://github.com/Vintaurus/azureautomationforsps
- SharePoint Account with Password (need permission for provisioning site)
- SharePoint List with the fields “Title”, “Status” (Single text), and “Site” (Link)
1. Create Azure Automation
- Call Azure Portal https://portal.azure.com
- Create a new resource
- Add “Automation”
- Fill data for Azure Automation
Now we have Azure Automation. Next step is to add a credential for SharePoint account
2. Add credentials for Azure Automation
- Select the existing automation
- Go to “Shared Resources” and select “Credentials”
- Click “Add a credential” and enter data “SpsAdmin” and SharePoint Account
3. Import a PnP PowerShell Modul
Before the PowerShell-script is added to a runbook, the runbook needs a module “SharePointPnPPowerShellOnline”.
- Go to the page https://www.powershellgallery.com/packages/SharePointPnPPowerShellOnline
- Select “Azure Automation” and click “Deploy to Azure Automation”
- In Azure, select the existing automation account
- Click “OK”
Now the module “SharePointPnPPowerShellOnline” is available for the runbook. You can check it in “Modules”:
4. Add item in the SharePoint List
Create a new item with the value of the title. The next step the runbook will run and create the site.
5. Create a runbook
Now we can add the existing PowerShell script to the runbook. The good news is here; we don’t change anything in the script. I created this script for the SharePoint on-premises and added it directly to a runbook in Azure.
- Go to “Runbook”, click “Import a runbook” and upload PowerShell script from https://github.com/Vintaurus/azureautomationforsps
- Add your URL for SharePoint in the script
- Click “Test pane” and select “Start” check if your PowerShell script runs without error.
- Back to the script, click “Edit PowerShell Runbook” and select “Publish”
6. Create schedules
I want that the runbook should run every 5 minutes. So I have to create 12 schedules because the schedule can run minimal every 1 hour.
- Go to “Schedules” and select “Add a schedule”
- Click “Link a schedule to your runbook”, click “Create a new schedule”, fill data
- Now repeat for 9:05, 9:10, 9:15,…..9:55. After that, now all schedules should be linked to the runbook.
Conclusion
Wow, the PnP-PowerShell-Script is added without change the code. It can migrate 1:1 from OnPremises to Azure.