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