如何通过 PowerShell 获取在线文件的文件大小?

mdi*_*nh1 3 powershell

我正在尝试编写一个执行以下操作的 PowerShell 脚本:

  • 检查PC上是否存在特定文件
  • 如果存在,将本地文件大小与在线文件大小进行比较。如果在线文件大小大于本地文件大小,则下载文件。(检查更新版本)
  • 如果它不存在,请从网站下载该文件。

是否可以在不下载的情况下获取在线文件的文件大小?我尝试使用 .length 但它没有用。(我是 PowerShell 的新手)

PS脚本

$localpath = "C:\Users\USERNAME\Desktop\test.csv"

If(Test-Path -Path $localpath)
{
    #Exist, check for an updated version
    $localFileSize = (Get-Item $localpath).length
    $onlineFileSize = (Get-Item 'test.com/test.txt').length

    if($onlineFileSize -gt $localFileSize)
    {
        $url = "test.com/test.txt"
        $downloadFile = "C:\Users\USERNAME\Desktop\test.csv"

        (New-Object System.Net.WebClient).DownloadFile($url, $downloadFile)
    }
} else
{
    #Does not exist, download the file
    $url = "test.com/test.txt"
    $downloadFile = "C:\Users\USERNAME\Desktop\test.csv"

    (New-Object System.Net.WebClient).DownloadFile($url, $downloadFile)
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*oey 7

您可以使用Invoke-WebRequestHEAD方法仅获取标题而不下载任何内容。如果您请求的资源具有已知长度,那么您将获得一个Content-Length可以使用的标头,例如

(Invoke-WebRequest $url -Method Head).Headers.'Content-Length'
Run Code Online (Sandbox Code Playgroud)