I have a hybrid environment with a publishing site on premises and collaboration sites in SharePoint Online. I have some scripts that need to run against both environments (independently, not simultaneously -- there will be one run of the script for each environment).
I found Erwin's article about setting up my PnP-based scripts so that they can work with either environment here:
but it seems to be a bit out of date. I have followed the directions about the environment variables and tried to compensate for the changes to the pathing/naming of libraries on my own, but even so I am getting errors that are keeping my scripts from running. The first is a Warning about "unapproved verbs", and the second is that "some required components are missing" even though I just downloaded and installed both the 2016 and Online releases for March 2017. I am trying to import the pnp commands at the top of my script with this:
Import-Module $pnpmodulepath -Force
where $pnpmodulepath is a string passed in as a parameter. I am currently passing in this string:
Okay, I figured out that I need to target the SharePointPnPPowerShell[2013|2016|Online].psd1 file and not the .DLL. That solves the main issue above. I also found the -DisableNameChecking parameter which got rid of the "verb" warning.
When I try running agaist 2016 on premises, Connect-PnPOnline complains:
Connect-PnPOnline : Method not found: 'Void Microsoft.SharePoint.Client.ClientContextExtensions.ExecuteQueryRetry(Microsoft.SharePoint.Client.ClientRuntimeContext, Int32, Int32)'.
Is there some issue with ExecuteQueryRetry in the 2016 version of the library? I have the exact same script running against my SP Online site and it works perfectly.
I have triple checked that the correct 2016 module is the only one loaded. I really need to be able to use this against an On Prem installation, so any insight will be welcome.