Powershell“不支持UNC路径”,但我使用的是Push-Location

时间:2019-05-29 16:53:57

标签: powershell scripting unc pushd

我正在Powershell中运行一个命令行程序,在\ servername \ files文件夹中作为运行文件夹工作。即使我使用的是Push-Location(这是我在谷歌搜索时发现的唯一解决方案),也会出现“不支持UNC路径”错误。给出此错误的最简单代码如下:

Push-Location \\servername\files
cmd.exe \c ping 10.1.10.10
Pop-Location

3 个答案:

答案 0 :(得分:2)

PetSerAl是正确的,您是从cmd而不是Powershell获得此响应的。如果您首先配置了PSDrive,这将起作用,但是我不知道这对于您的用例是否非常有效:

New-PSDrive -Name S -PSProvider FileSystem -Root \\servername\files -Persist
Push-Location
Set-Location S:\
cmd.exe /c ping 10.1.1.1
Pop-Location
Get-PSDrive S | Remove-PSDrive

答案 1 :(得分:0)

Push-Location将保存您的位置,但是由于您尚未将位置更改为执行mdd.exe程序的非UNC位置,因此会抱怨。

只需在cmd.exe调用之前放置一个Set-Location,以确保您不在UNC路径上。像这样:

设置位置$ env:APPDATA

会工作的。

答案 2 :(得分:0)

*-位置按设计工作,如下文所示。

演示---

PS C:\Scripts> (Get-CimInstance -ClassName CIM_OperatingSystem).Caption
Microsoft Windows Server 2012 R2 Standard

PS C:\Scripts> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1      



PS C:\Scripts> Test-Path -Path '\\FileServer01\Data'
True

PS C:\Scripts> $pwd

Path
----
C:\Scripts



PS C:\Scripts> Push-Location -Path '\\FileServer01\Data'

PS Microsoft.PowerShell.Core\FileSystem::\\FileServer01\Data> $pwd

Path
----
Microsoft.PowerShell.Core\FileSystem::\\FileServer01\Data 

至此...

cmd.exe \c ping 10.1.10.10

...不是从UNC运行,而是从主机运行,因此推送到共享这一事实是毫无意义的。

如果共享具有要运行的exe,则没有理由更改到该位置来运行它。只需使用定义的方法通过PowerShell运行外部命令(请参见下面的链接),并使用UNC路径而不先切换即可。即使运行远程exe仍然意味着正在从主机中使用cmd.exe。

PS Microsoft.PowerShell.Core\FileSystem::\\FileServer01\Data> Pop-Location

PS C:\Scripts> $pwd

Path
----
C:\Scripts



PS C:\Scripts> 
  

运行外部命令时,始终需要特别注意。

     

PowerShell:运行可执行文件   https://social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running-executables.aspx

     

解决PowerShell中外部命令行的问题   https://devblogs.microsoft.com/scripting/solve-problems-with-external-command-lines-in-powershell

     

在Powershell中运行外部命令的5个技巧   https://powershelleverydayfaq.blogspot.com/2012/04/top-5-tips-for-running-external.html

     

使用Windows PowerShell运行旧的命令行工具(及其   最奇怪的参数)   https://blogs.technet.microsoft.com/josebda/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters

     

在PowerShell中正确执行外部命令   https://mnaoumov.wordpress.com/2015/01/11/execution-of-external-commands-in-powershell-done-right   https://mnaoumov.wordpress.com/2015/03/31/execution-of-external-commands-native-applications-in-powershell-done-right-part-2 https://mnaoumov.wordpress.com/2015/04/05/execution-of-external-commands-native-applications-in-powershell-done-right-part-3

     

报价细节

     

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules   https://trevorsullivan.net/2016/07/20/powershell-quoting