需要一行powershell命令下载具有基本身份验证的文件

需要一行powershell命令下载具有基本身份验证的文件,powershell,Powershell,设置一些CI内容。我需要一行powershell命令从服务器下载具有基本身份验证的文件 我可以在未经验证的请求下执行此操作,如下所示: iex ((New-Object Net.Webclient).DownloadString('http://myhost.example/resource.etc')) 如果没有身份验证,我将如何执行相同的操作?从中,我可以看出我需要一个NetworkCredential,只是想弄清楚如何将其压缩为单个命令。这是如何使用oneliner powershell

设置一些CI内容。我需要一行powershell命令从服务器下载具有基本身份验证的文件

我可以在未经验证的请求下执行此操作,如下所示:

iex ((New-Object Net.Webclient).DownloadString('http://myhost.example/resource.etc'))

如果没有身份验证,我将如何执行相同的操作?从中,我可以看出我需要一个NetworkCredential,只是想弄清楚如何将其压缩为单个命令。

这是如何使用oneliner powershell的身份验证下载字符串

iex(((new-object System.Net.WebClient).Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)).DownloadString($url))

如果您确实需要一行代码,那么可以使用
Invoke RestMethod
将凭证的Base64转换填充到一个表达式中。不会赢得任何选美比赛,但是嘿。通常,如果您真的希望在最后使用一行程序,那么最好编写自己的cmdlet,将其放入脚本中,并确保它由CI管道导入,这样您就可以在全球范围内使用这些cmdlet。这也将防止大量复制粘贴原本晦涩难懂的单行线(如果出现错误,祝你好运,到处都能更改它们)。目标应该是记录成功的、可重复的过程。这使其他人(以及我们自己在6个月内)能够在不重新发明轮子的情况下取得成功。一句话可能是一种有趣的思维练习,但它们远不如易于阅读和理解的代码那么有价值。这一切都很好,但却有点傲慢,与问题无关。显然,在powershell中执行此操作将是一个无法理解的混乱(但我发现这很难相信),因此我可能会使用curl来代替它。(只需用表达式替换其中的所有变量,就可以了。)有关如何获取基本Auth头并在
Invoke RestMethod
中使用它的示例,请参阅
WebClient.Headers可以添加到,但据我所知,不能在
新对象-属性
哈希表中指定。