Powershell UNC Path not supported exception

filepath, powershell, unc

Solution

This gives the path you are after without the `Microsoft.PowerShell.Core\FileSystem::`:

(Resolve-Path $file).ProviderPath

No need to use a string replace.

Problem

Well I've struggled long enough with this one. I have a project to compare two folders, one on each of two servers. We are comparing files on the source server with those on the target server and will create a list of the files from the source that will need to be refreshed once an update is completed on the target server. Here's my script (many thanks to http://quickanddirtyscripting.wordpress.com for the original) : ``` param ([string] $src,[string] $dst) function get-DirHash() { begin { $ErrorActionPreference = "silentlycontinue" } process { dir -Recurse $_ | where { $_.PsIsContainer -eq $false -and ($_.Name -like "*.js" -or $_.Name -like "*.css"} | select Name,FullName,@{Name="SHA1 Hash"; Expression={get-hash $_.FullName -algorithm "sha1" }} } end { } } function get-hash { param([string] $file = $(throw 'a filename is required'),[string] $algorithm = 'sha256') try { $fileStream = [system.io.file]::openread((resolve-path $file)); $hasher = [System.Security.Cryptography.HashAlgorithm]::create($algorithm); $hash = $hasher.ComputeHash($fileStream); $fileStream.Close(); } catch { write-host $_ } return $hash } Compare-Object $($src | get-DirHash) $($dst | get-DirHash) -property @("Name", "SHA1 Hash") ``` Now for some reason if I run this against local paths say `c:\temp\test1 c:\temp\test2` it works fine, but when I run it using `UNC` paths between two servers I get Exception calling "OpenRead" with "1" argument(s): "The given path's format is not supported." Any help with this would be greatly appreciated. The end result should be a list of files, but for some reason it doesn't like the `UNC` path. The script name is `compare_js_css.ps1` and is called as such: `.\compare_js_css.ps1 c:\temp\test1 c:\temp\test2` <-- This works `.\compare_js_css.ps1 \\\\devserver1\c$\websites\site1\website \\\\devserver2\c$\websites\site1\website` <-- Returns the aforementioned exception. Why?

Original source