我正在编写一个脚本,用于将BGInfo部署到大量设备上,这些设备主要是与POS机相关的,稍后会出现。
我的问题是我有一个大约6个文件的存储库,我需要推送到这些设备上,Powershell版本号有很大的差异,最低为2.0,所以我不能使用invoke-webrequest从SharePoint下载文件,我必须使用WebClient.DownloadFile进行此操作,我清晰的基本脚本的问题似乎是输出的文件几乎相同的HTML文件,而不是我的文件,如果我把它直接放在浏览器中。
我也在Google Drive的直接URL中尝试了相同的脚本,它确实在一段时间内有效,但最终将失去令牌身份验证。因此,Sharepoint URL显然存在某种我不理解的掩蔽。
示例脚本&问题的症结所在(
$Zealpath = "C:\ProgramData\Zeal"
If(!(test-path $Zealpath))
{
New-Item -ItemType Directory -Force -Path $Zealpath
}
If(!(test-path $BGIpath))
{
New-Item -ItemType Directory -Force -Path $BGIpath
}
$BGIurl = "https://zealconsultants.sharepoint.com/:u:/s/Software/EfoalXiCqhtFgAvuCbtY9RsB2WPSTFwsJ2gtvV2bg0rQww?e=yvZhIW&download=1"
$BGIoutput = "C:\ProgramData\Zeal\BGInfo\bginfo.exe"
$wc = new-object System.Net.WebClient
$wc.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36")
$wc.DownloadFile($BGIurl, $BGIoutput) #deploy to .exe所以,是的,直接网址下载BGInfo.exe,并通过powershell运行它将输出一个超文本标记语言文件。
如有任何帮助,敬请惠顾。
发布于 2020-08-04 22:55:38
这里的问题是URL。似乎没有指向文件。
还要确保创建了整个路径。如果BGInfo文件夹不存在,下载功能将失败。
试试这个:
$Zealpath = "C:\ProgramData\Zeal\BGInfo"
If(-not (test-path $Zealpath -PathType Container))
{
New-Item -ItemType Directory -Force -Path $Zealpath
}
$BGIurl = "https://zealconsultants.sharepoint.com/sites/Software/Shared%20Documents/Atera%20Scripted%20Deployments/BGInfo/Bginfo.exe"
$BGIoutput = "C:\ProgramData\Zeal\BGInfo\bginfo.exe"
$wc = new-object System.Net.WebClient
$wc.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36")
$wc.DownloadFile($BGIurl, $BGIoutput)https://stackoverflow.com/questions/63245837
复制相似问题