I have a large library of existing powershell scripts, primarily to run some complicated logic and interactions between SQL Server and the file system.
The SQL interactions typically are performed through the cmdlet Invoke-SQLCmd.
Recently the SSMS version on all of my servers was upgraded to 2012. This meant I had to make some changes to my code to remove references to the sqlserverprovidersnapin100 and sqlservercmdletsnapin100 since those are deprecated in 2012 in favor of importing the SQLPs module.
This has worked OK, but it seems that the SQLPs module is at some point changing the current location to PS SQLSERVER> instead of <local folder>, which makes a lot of my other commands fail. For instance, if I run a Test-Path on a network drive, it works fine from the <local folder> location but will fail from the SQLSERVER location.
Is this a known issue? Is there a workaround or setting I can change for this?
The main script I am worried about is over 1000 lines and has run with no issues for over two years until we made this change, so I’d like to avoid doing a line by line test of it if I can.
I’ve solved this problem by adding a
cd <local folder>as the first line of the script to break out of the provider.Feels hackish though.