我知道错误几乎是自我解释,但我无法找到解决方案。我编写了一个PowerShell
脚本来自动化dev机器的设置项目。有一组程序必须安装,所以我想要做的事情我首先下载文件,然后安装它。我在将文件从网络下载到本地计算机时遇到问题。
我的逻辑如下。我有一个.xml
文件,我配置了所有的东西。对于下载,它看起来像这样:
<download source="https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/Git-1.9.5-preview20150319.exe"
destination="C:\Temp" filename="Git-1.9.5-preview20150319.exe"/>
然后在我的PowerShell
脚本文件中,我有这个功能:
function install-tools() {
Set-ExecutionPolicy RemoteSigned
$xmlFileInformation = $config.SelectNodes("/setup/downloads/download");
Foreach ($file in $xmlFileInformation)
{
$("Filename: " + $file.filename)
$("File source: " + $file.source)
$("File destionation: " + $file.destination)
$("****************************************************************");
$("*** Downlading "+ $file.filename);
$("****************************************************************");
Invoke-WebRequest $file.source -OutFile $file.destination
}
$("Task finished");
}
执行完成后,我从标题UnauthorizedAccessException from PowerShell when using Invoke-WebRequest
中收到错误。我可以提到的两件事是我已经包含Set-ExecutionPolicy RemoteSigned
,并且我还以管理员身份执行运行PowerShell
的脚本。我尝试了不同的路径,但每次都是一样的,我没有得到任何地方写的许可。我唯一不能尝试的是使用另一个驱动器,我只有一个 - C:\
。
还有一件奇怪的事 - 我的目标目录是C:\Temp
但是在我的一次尝试中,我在C:\
中没有这样的目录,所以我最终得到了名为Temp
的文件我的C:\
,但这是我得到文件最接近的。
我不需要在特定的地方保存这些文件,因为在成功设置后很有可能删除整个目录所以我需要的是让powershell将文件保存在C:\
的某个地方驾驶。因为我不确定这是否与管理我的系统和设置正确的权利有关(我试图尽可能地降低保护)或者我错过了PowerShell
脚本中的某些内容?
答案 0 :(得分:2)
您没有指定要下载的文件名。取代
-OutFile $file.destination
到
-OutFile (Join-Path $file.destination $file.filename)