PowerShell无法识别外部可执行文件。
PowerShell无法识别外部可执行文件。
为什么我不能在以下的PowerShell脚本中运行7z
?
Set-Location "C:\Program Files\7-Zip" Invoke-Expression "dir" Invoke-Expression "7z" Invoke-Expression "7z.exe"
结果:
目录:C:\Program Files\7-Zip 模式 上次写入时间 大小 名称 ---- ------------- ------ ---- -a--- 11/18/2010 9:08 PM 91020 7-zip.chm -a--- 11/18/2010 9:08 PM 86016 7-zip.dll -a--- 11/18/2010 9:24 PM 1422336 7z.dll -a--- 11/18/2010 9:08 PM 284160 7z.exe -a--- 11/18/2010 9:27 PM 162816 7z.sfx -a--- 11/18/2010 9:27 PM 152064 7zCon.sfx -a--- 11/18/2010 9:10 PM 740352 7zFM.exe -a--- 11/18/2010 9:11 PM 387072 7zG.exe -a--- 9/10/2010 11:41 AM 333 descript.ion -a--- 11/18/2010 9:11 PM 32400 History.txt -a--- 1/2/2010 3:18 PM 1927 License.txt -a--- 11/18/2010 9:12 PM 1565 readme.txt 7z : 无法将'term'7z'识别为 cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 在行:1 字符:1 + 7z + ~~ + CategoryInfo : ObjectNotFound: (7z:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 7z.exe : 无法将'term'7z.exe'识别为 cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 在行:1 字符:1 + 7z.exe + ~~~~~~ + CategoryInfo : ObjectNotFound: (7z.exe:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
PowerShell无法识别外部可执行文件的问题可能出现的原因是默认情况下,PowerShell只会在PATH环境变量中查找可执行文件,而不会在当前目录(.\)中查找。为了解决这个问题,可以采取以下方法:
1. 在调用当前目录下的可执行文件时,在可执行文件的名称前加上“.\\”:
Invoke-Expression ".\\7z"
2. 使用可执行文件的完整路径进行调用(使用上面提到的“&”语法):
& "c:\Program Files\7-zip\7z"
3. 将可执行文件所在目录添加到PATH环境变量中(在PowerShell中使用$env:Path):
$env:Path += "c:\Program Files\7-zip" Invoke-Expression "7z"
如果选择第三种方法,这种修改只是临时的,只会影响当前进程。如果想要永久性地修改PATH环境变量,可以使用[Environment]::SetEnvironmentVariable方法(参考链接:technet.microsoft.com/en-us/library/ff730964.aspx)。