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 interac
A little more information on WHY in sql 2012 it is changing to the SQLSERVER: directory...
When powershell imports sqlps module, the manifest defines a post script file named SqlPsPostScript.ps1. This file (first line) changes the current location to the SQLSERVER: provider
On x64 bit box the module is located - C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\SQLPS.
In powershell 3.0 automatic importing can make it difficult to tell when this will occur (in my experience).
Its not clear why (from a logical standpoint) it should do this. We don't want to touch the SQL server modules, so I guess you need to do an explicit set-location after import of the module. You might also look at this as a solution that's a little less hacky.
Push-Location
Import-Module sqlps
Pop-Location
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.
I solved a similar problem by using the PSPath property (which contain Microsoft.PowerShell.Core\FileSystem::) of the file I was trying to copy, instead of the default property. Hope it helps !