2017-05-10 14 views
2

URLに格納されたPowerShellスクリプトを実行し、カスタム引数とこのPowerShellに与えられた引数の両方を渡すPowerShellスクリプトを作成します。具体的には、私が行うことができます:私は理想的な一時ファイルを使用せずに、しかしpowershell -content -は引数を渡すも許可するようには思えないことをやってみたい一時ファイルなしのURLからPowershellスクリプトを実行

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

。一時ファイルを避ける方法はありますか?

+0

どのように見えるか[chocolateyそれをしない](https://chocolatey.org/install) – LotPings

答えて

4

あなたはスクリプトブロックにコンテンツを変換し、引数chocolateyのサイトから直接盗まれた

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

は$ argsを+ @( 'someargument')があると思われますまたは$ argsを平らにして文字列に変換します –

+0

ありがとう@NeilMitchell – Igor

3

でコマンドとしてそれを呼び出すことができます。私はより頻繁にこれを使用するIべき

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 

source

+0

これは私が使用する、最も簡単で最も直接的な方法です.... 'DownloadString()'メソッドは生の内容を引き出し、 'iex' ( 'Invoke-Expression')は、引っ張られた文字列を実行します –

+1

これは、リモートのpowershellスクリプトに追加のコマンドライン引数を与えることを許可していないようです。 –

関連する問題