使用Invoke-WebRequest

时间:2015-07-04 15:03:11

标签: windows powershell

我知道错误几乎是自我解释,但我无法找到解决方案。我编写了一个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脚本中的某些内容?

1 个答案:

答案 0 :(得分:2)

您没有指定要下载的文件名。取代

-OutFile $file.destination

-OutFile (Join-Path $file.destination $file.filename)