diff --git a/pkg/volume/util/subpath/subpath_windows.go b/pkg/volume/util/subpath/subpath_windows.go index 964f86af9f3..3428e639546 100644 --- a/pkg/volume/util/subpath/subpath_windows.go +++ b/pkg/volume/util/subpath/subpath_windows.go @@ -75,7 +75,7 @@ func getUpperPath(path string) string { // Check whether a directory/file is a link type or not // LinkType could be SymbolicLink, Junction, or HardLink func isLinkPath(path string) (bool, error) { - cmd := fmt.Sprintf("(Get-Item -Path %s).LinkType", escapeWindowsPath(path)) + cmd := fmt.Sprintf("(Get-Item -LiteralPath %q).LinkType", path) output, err := exec.Command("powershell", "/c", cmd).CombinedOutput() if err != nil { return false, err @@ -86,17 +86,6 @@ func isLinkPath(path string) (bool, error) { return false, nil } -// Escape the special character in vsphere windows path -func escapeWindowsPath(path string) (string) { - if strings.Contains(path, "``[") || strings.Contains(path, "``]") || strings.Contains(path, "` ") { - return path - } - escapeLeft := strings.Replace(path, "[", "``[", -1) - escapeRight := strings.Replace(escapeLeft, "]", "``]", -1) - escapeSpace := strings.Replace(escapeRight, " ", "` ", -1) - return escapeSpace -} - // evalSymlink returns the path name after the evaluation of any symbolic links. // If the path after evaluation is a device path or network connection, the original path is returned func evalSymlink(path string) (string, error) { @@ -124,7 +113,7 @@ func evalSymlink(path string) (string, error) { } } // This command will give the target path of a given symlink - cmd := fmt.Sprintf("(Get-Item -Path %s).Target", escapeWindowsPath(upperpath)) + cmd := fmt.Sprintf("(Get-Item -LiteralPath %q).Target", upperpath) output, err := exec.Command("powershell", "/c", cmd).CombinedOutput() if err != nil { return "", err