2013-04-23 13 views
6

Chcę tylko powtórzyć to samo zachowanie, które robię na systemach Linuxcurl http: //url/script.ps1 | możliwa kombinacja?

c:\> \{CURL_EQUIVALENT_ON_WINDOWS} - http://url/script | powershell 

Czy to możliwe?

Zasadniczo chcę uruchomić strumień, który pobieram z serwera.

IE: w krokach:

1) Dowiedz się, jak wykonać strumieni w PowerShell. Execute strumień (które już mam w systemie plików)

c:\> type script.ps1 | powershell -command - 

ale to nie działa.

Istnieje opcja -Plik do wykonania "Plik", i zasadniczo chcę wykonać strumień, jeśli to możliwe.

2) Dowiedz się, jak wykonać strumień, który pobieram z serwera i podłącz go do powłoki powershell.

+0

Hm, go wypróbować? :-) – akluth

+0

Czego się spodziewasz '| powershell' zrobić? –

+0

wystarczy uruchomić strumień – p4tux

Odpowiedz

3

Możesz podać parametr polecenia powershell z łącznikiem, aby odczytać jego polecenie ze standardowego wejścia. Poniżej znajduje się przykład:

"Write-Host This is a test" | powershell -command - 

Przykład wykorzystania zawartości pliku skryptu:

Get-Content .\test.ps1 | powershell -command - 

Z menu pomocy PowerShell:

powershell /? 

-polecenie
wykonuje określony komendy (i dowolne parametry) tak, jakby były wpisane w systemie Windows P wier poleceń owerShell, a następnie kończy działanie, chyba że podano parametr NoExit. Wartością polecenia może być "-", ciąg znaków. lub blok skryptu .

If the value of Command is "-", the command text is read from standard 
input. 
+0

Mmm próbowałem za pomocą skryptu: type script.ps1 | powershell -command - i to nie działa :-(tutaj jest opcja -File, ale to będzie bezwartościowe, w zasadzie chcę wykonać strumień – p4tux

+1

Zaktualizowałem z przykładem użycia zawartości pliku skryptu. pliku, a nie tylko określić plik.To będzie drążyć zawartość pliku jako ciąg, tak jak byłoby to pobranie pliku z curl. – dugas

7

Dzięki Dugas I dowiedzieć się, jak wykonać strumienie z PowerShell, a wraz z tym linkiem http://blog.commandlinekungfu.com/2009/11/episode-70-tangled-web.html rozumiem, jak uzyskać zawartość jako strumień od http z PowerShell.

Więc ostateczny curl | Rura PowerShell wygląda następująco:

PS C:\>(New-Object System.Net.WebClient).DownloadString("http://url/script.ps1") | powershell -command - 

dziękuję wszystkim, że przyczynia się do tego pytania :-)

+3

Można również użyć 'Wywołanie-Wyrażenie':' (New-Object System.Net .WebClient) .DownloadString ("http: //url/script.ps1") | iex. Oto jak robi to [PsGet] (http://psget.net/). –