首页 > 解决方案 > Invoke-WebRequest 或 wget 无法从 url 下载 PS1 文件

问题描述

我正在运行一个 .ps1 脚本,它基本上会下载它从远程 url 找到的所有文件。该 url 在 IIS 中启用了目录浏览,我可以在浏览器中查看所有文件。

所有文件都正确下载,但当它尝试下载任何 .ps1 文件时,它会失败并显示:404 - 找不到文件或目录。文件肯定在那里。

wget $url/test.ps1 -outfile $destPath\test.ps1

Invoke-WebRequest -Uri $url/$basename -OutFile $destPath\$basename

两者都因 404 错误而失败。我已验证 $url、$basename 和 $destPath 返回正确的值。我可以将同一个文件重命名为 test.exe 并且下载得很好。我尝试使用上述方法下载的任何其他文件(txt、exe 文件)但不是 PS1 文件。我还注意到,如果我还有其他带有 .xyz 之类的 ext 文件,它也会出错并且没有下载。也许我需要在 IIS 中配置一些 MIME 类型设置?

或者那些不允许您下载powershell脚本文件的命令是否发生了某种过滤器?在本地机器上还是在远程机器上?它是否检查 IE 设置并且需要打开或关闭某些东西?

我什至尝试了这个脚本,它也从网站下载文件但同样的问题:

http://vcloud-lab.com/entries/powershell/microsoft-powershell-download-a-whole-folder-of-files-subfolders-from-the-web-directory

标签: powershell

解决方案


啊,我明白了。必须在 web.config 中添加这个:

<system.webServer>
    <directoryBrowse enabled="true" />
    <staticContent>
    <mimeMap fileExtension="*" mimeType="text/plain" /><!-- or application/octet-stream -->
    </staticContent>
</system.webServer>

推荐阅读