PowerShell获取当前路径下chromedriver.exe文件版本的问题
问题:获取OneDrive含连字符路径下文件版本
下载文件后尝试获取当前目录下文件的版本,试了约5种方法均无效。当前路径位于OneDrive中且包含连字符,不确定是否对此有影响。
现有代码如下:
$path = ? Move-Item .\chromedriver-win64\chromedriver.exe .\chromedriver.exe -Force $version = (Get-command "$path\chromedriver.exe").FileVersionInfo.FileVersion write-host "Chrome is now version: $version"
已尝试过以下获取当前路径的方式:
- $pwd
- (get-location).path
- $PWD | select -Expand Path
解决方案
其实不需要单独定义$path,因为文件已经被移动到当前工作目录,直接针对该文件操作即可,推荐用Get-Item替代Get-Command(后者可能匹配到系统中其他同名文件,导致获取错误版本):
Move-Item .\chromedriver-win64\chromedriver.exe .\chromedriver.exe -Force $version = (Get-Item .\chromedriver.exe).VersionInfo.FileVersion Write-Host "ChromeDriver 当前版本: $version"
如果一定要使用$path变量,正确的写法是用Join-Path拼接路径(避免手动拼接时的格式问题):
$path = (Get-Location).Path Move-Item .\chromedriver-win64\chromedriver.exe .\chromedriver.exe -Force $filePath = Join-Path -Path $path -ChildPath "chromedriver.exe" $version = (Get-Item $filePath).VersionInfo.FileVersion Write-Host "ChromeDriver 当前版本: $version"
注:OneDrive路径和其中的连字符不会影响文件版本获取,问题核心是之前的Get-Command可能定位到错误的文件,以及路径拼接的方式不够严谨。
内容的提问来源于stack exchange,提问作者Matt Williamson
相关产品推荐
相关产品推荐

