PowerShell无法识别外部可执行文件。

26 浏览
0 Comments

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

0
0 Comments

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)。

0