2013-08-26 27 views
22

Poszukuję sposobu uruchomienia tylko kilku poleceń PowerShell z wiersza polecenia. Nie chcę tworzyć skryptu, ponieważ to tylko kilka komend, które muszę uruchomić, a ponieważ nie wiem, jak pisać w PowerShell.Uruchom polecenie PowerShell z wiersza polecenia (bez skryptu ps1)

Oto komenda Próbuję użyć na początek:

Get-AppLockerFileInformation -Directory <folderpath> -Recurse -FileType <type> 

Naprawdę nie chcemy stworzyć scenariusz do tego jak byłoby znacznie łatwiejsze, jeśli mogę tylko uruchomić jeden lub dwie komendy z pliku wsadowego z resztą rzeczy.

EDYCJA: Oto, co próbowałem do tej pory.

1)

powershell -Command "Get-AppLockerFileInformation....." 
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program.... 

2)

powershell -Command {Get-AppLockerFileInformation.....} 

brak błędu przy tej drodze, ale nie dostają nic w zamian. Jeśli korzystam z Set-AppLockerPolicy... nic się nie dzieje.

3)

powershell -Command "{Get-AppLockerFileInformation.....}" 
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program.... 

4)

powershell -Command "& {Get-AppLockerFileInformation.....}" 
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program.... 

5)

powershell "& {Get-AppLockerFileInformation.....}" 
Error: The term 'Get-AppLockerFileInformation is not recognized as the name of a cmdlet, function, script file, or operable program.... 

6)

powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command {Get-AppLockerFileInformation....} 

Brak błędu, ale nic się nie dzieje.

7)

powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Get-AppLockerFileInformation...." 

Nie błąd, ale nic się nie dzieje.

+1

Z jednej strony można powiedzieć " Naprawdę nie chcę tworzyć skryptu "i z drugiej strony mówisz" jeśli mogę po prostu uruchomić jedną lub dwie komendy z pliku wsadowego ". Więc: co to jest ??? – djangofan

+0

Powinienem wyjaśnić, nie chcę tworzyć skryptu powłoki. –

+0

A funkcja "Get-AppLockerFileInformation" działa dobrze podczas uruchamiania z nowej, świeżej i czystej linii poleceń programu Power Shell? Jaki system operacyjny? (testowane Get-App .. w Win7 i nie ma takiego cmdleta w takim przypadku, więc otrzymasz ten sam komunikat o błędzie) – NiKiZe

Odpowiedz

38

Oto tylko odpowiedzieć że udało się pracować dla mojego problemu , zorientowałem się, za pomocą strony internetowej this (ładny odnośnik).

powershell -command "& {&'some-command' someParam}" 

Również tutaj jest schludny sposób zrobić wiele poleceń:

powershell -command "& {&'some-command' someParam}"; "& {&'some-command' -SpecificArg someParam}" 

Na przykład ten sposób wpadłem moje 2 komendy:

powershell -command "& {&'Import-Module' AppLocker}"; "& {&'Set-AppLockerPolicy' -XmlPolicy myXmlFilePath.xml}" 
+1

Oto kolejna przydatna sztuczka, możesz uruchomić skrypt ps1 z wiersza poleceń i przekazać args w następujący sposób: 'powershell. exe -File "C: \ myfile.ps1" arg1 arg2 arg3' lub 'powershell.exe -File" C: \ myfile.ps1 "-Którne polecenie arg1 -Another-Command arg2' –

+2

Polecenie' powershell -command "& {& "Moduł aplikacji AppLocker w module importu}"; "& {& 'Set-AppLockerPolicy' -XmlPolicy myXmlFilePath.xml}" 'uruchamia te 2 komendy PS w oddzielnych sesjach PS, tj. Nie ma zastosowania Jeśli chcesz udostępnić zmienną pomiędzy 2 poleceniami. Rozwiązanie jest następujące: 'powershell -command" i {$ someVar = 'test'; & 'Write-Host' $ someVar} "' –

+0

@Maciej Nie sądzę, że działa na różnych sesjach PS, w przeciwnym razie druga część to konkretne polecenie zakończyłoby się niepowodzeniem, ponieważ potrzebuję tego modułu załadowanego z pierwszej części polecenia. Nie zgadzam się. Ale, jak wspomniałeś, może być pewna wartość w dzieleniu zmiennych w razie potrzeby. –

1

Może powershell -Command "Get-AppLockerFileInformation....."

Spójrz na powershell /?

+0

To właśnie próbowałem, ale wydaje mi się, że nie otrzymuję składnia całkiem słuszna lub coś podobnego. Kiedy uruchomię polecenie bezpośrednio z poziomu powłoki, działa to dobrze ... –

+0

OK, Czy masz błąd lub coś innego? Edytuj pytanie i podaj więcej informacji. Czego próbowałeś i co nie działa, itp. – NiKiZe

+0

Proszę zobaczyć moją edycję powyżej. –

6

uruchomić go na jednej linii poleceń tak:

powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile 
    -WindowStyle Hidden -Command "Get-AppLockerFileInformation -Directory <folderpath> 
    -Recurse -FileType <type>" 
+0

Jak tylko dostanę szansę, wypróbuję to. Wydaje się jednak, że jest tam dużo flag, czy byłoby tak samo, gdybym chciał użyć Set-AppLockerPolicy i New-AppLockerPolicy? –

+0

To nie zadziałało, nie wspominając o tym, że flaga -WindowStyle zamyka mój wiersz poleceń ... Nie potrzebuję też flagi ExecutionPolicy, ponieważ używam bezpośrednio wiersza poleceń. –

+0

Tak, niektóre opcje są prawdopodobnie niepotrzebne. Po prostu dostosuj w zależności od potrzeb. Więcej informacji tutaj: http://zduck.com/2012/powershell-batch-files-exit-codes/ – djangofan

Powiązane problemy