从没有临时文件的URL运行Powershell脚本

Nei*_*ell 3 powershell

我想编写一个PowerShell脚本,该脚本运行存储在URL上的PowerShell脚本,传递自定义参数并转发给此PowerShell的所有参数。具体来说,我可以这样做:

$VAR=Invoke-WebRequest http://example.com/powershell.ps1
$TEMP=New-TemporaryFile
$FILE=$TEMP.FullName + ".ps1"
$VAR.Content | Out-File $FILE
& $FILE somearguments $args
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望在不使用临时文件的情况下执行此操作,但是powershell -content -似乎不允许同时传递参数。有什么办法可以避免使用临时文件?

Dan*_*ans 9

直接从Chocolatey网站窃取。我经常使用它

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Run Code Online (Sandbox Code Playgroud)

资源

  • 这似乎不允许向远程 powershell 脚本提供额外的命令行参数。 (5认同)

Syn*_*Cap 6

自动下载并启动remotePowerShell 脚本,无需保存(动态):

iex (iwr $ScriptURL).Content
Run Code Online (Sandbox Code Playgroud)

哇:

在此输入图像描述

alias iex,iwr
Run Code Online (Sandbox Code Playgroud)

更多帮助:

Get-Help Invoke-Expression
Get-Help Invoke-WebRequest
Run Code Online (Sandbox Code Playgroud)


Igo*_*gor 5

您可以将内容转换为脚本块,然后使用参数将其作为命令调用

$Script = Invoke-WebRequest 'http://example.com/powershell.ps1'
$ScriptBlock = [Scriptblock]::Create($Script.Content)
Invoke-Command -ScriptBlock $ScriptBlock -ArgumentList ($args + @('someargument'))
Run Code Online (Sandbox Code Playgroud)

  • $args + @('someargument') 似乎是必需的,或者它将 $args 变平并将其变成字符串 (2认同)