我正在尝试编写一个执行以下操作的 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)
}
您可以使用Invoke-WebRequest
并使用HEAD
方法只获取标头而不下载任何内容。如果您请求的资源的长度已知,那么您将得到一个Content-Length
您可以使用的标头,例如
(Invoke-WebRequest $url -Method Head).Headers.'Content-Length'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)