2015-12-08 15 views
5

Próbuję wykonać mój pierwszy skrypt. Po prostu dostać PowerShell podciągnąć skrypt wpisany w notatniku i zapisać jako plik .ps1 zatytułowanej „test” (Próbowałem również scenariusz, ale znać nazwy nie mają nic wspólnego z nim):Nie rozpoznaje nazwy skryptu jako polecenia cmdlet, funkcji itp .; nie można też znaleźć perystaltyka pozycji na prostym skrypcie

Write-Host "Hello, World!" 

W PowerShell piszę

& "C:\Scripts\test.ps1" 

jak również

./test.ps1 

i jestem spełnione tylko z tym:

./test.ps1.txt : The term './test.ps1.txt' is not recognized as the name of a 
cmdlet, function, script file, or operable program. Check the spelling of the 
name, or if a path was included, verify that the path is correct and try again. 
At line:1 char:1 
+ ./test.ps1.txt 
+ ~~~~~~~~~~~~~~ 
    + CategoryInfo: ObjectNotFound: (./test.ps1.txt:String) [], CommandNotFoundException

Próbowałem zmienić nazwę pliku w PowerShell z

PS C:\Scripts> Rename-Item test.ps1.txt test.ps1 

Mam przełączany pomiędzy RemoteSigned i Unrestricted próbowałem kodu włącznie executionpolicy bypass (ja przepraszam, ja zamknęłam okno bez piśmie, że jednym dół). O ile mi wiadomo, wszystko jest aktualne i używam Windows 10, Windows PowerShell i zwykłego Notatnika Windows.

+0

Opublikowany komunikat o błędzie nie pasuje do komend, o których twierdziłeś ("./Test.ps1.txt' vs."./Test.ps1 "). Ponadto pliki .txt powinny być powiązane z Notatnikiem i powinny być automatycznie otwierane za pomocą tego programu, chyba że coś zepsujesz. Upewnij się, że skrypt jest obecny w bieżącym katalogu, gdy spróbujesz go uruchomić przez './Test.ps1'. –

Odpowiedz

3

Po pierwsze, bardzo zalecałbym korzystanie z ISE środowiska Windows PowerShell do pisania skryptów. Jest darmowy i zapewnia całkiem przyzwoitą konsolę/edytor, ponieważ jest darmowy (są tam rzekomo lepsze, ale zawsze mi to pasowało). Używam Visual Studio do innych rzeczy, i chociaż jest to zdecydowanie lepszy produkt (i powinien być), PowerShell ISE jest dość bogaty w funkcje.

Następnie, jeśli dopiero zaczynasz, powinieneś sprawdzić książkę Don Jone "Learn PowerShell 3.0 in a Month Lunches". Są to dwie wersje najbardziej aktualne, jednak wszystkie informacje są nadal aktualne, a po skończeniu książki będziesz w stanie samodzielnie szukać pomocy na cokolwiek innego. Obejmuje on wszystkie podstawy i jest bardzo dobrym pierwszym krokiem do nauki języka.

Teraz, aby odpowiedzieć na twoje pytanie: Skrypty PowerShell zwykle mają rozszerzenie .ps1. Inne rozszerzenia są zwykle używane w przypadku modułów (.psm1) lub innych treści pomocniczych obsługiwanych przez program Windows PowerShell. W większości przypadków pozostaniesz przy .ps1, a kiedy osiągniesz punkt, w którym zaczniesz potrzebować innych rozszerzeń, podejrzewam, że nie będziesz miał problemów z określeniem, które z nich potrzebujesz.

Istnieją dwa sposoby nazywane ogólnie skryptem PowerShell. Pierwszy z nich to zwykły wiersz polecenia i polecenie PowerShell, aby wykonał twój skrypt. Zostało to pokazane poniżej:

powershell.exe -File MyScript.ps1 

Istnieje kilka dodatkowych parametrów, które polecam, ale korzystanie jest zależne od wymagań. Oto, co zwykle oznaczyć na kopalni:

powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File MyScript.ps1 

To pokaże proces PowerShell ignorować profile każdy PowerShell skonfigurowaniu, który jest idealnym miejscem, jeśli masz kilka rzeczy w swoim skrypcie profilu, który robi takie rzeczy przeczytane wejście konsoli (dla twojej obecnej sytuacji, zakładam, że nie, ale możesz w przyszłości). Drugi to ExecutionPolicy one: RemoteSigned pokaże PowerShellowi, aby zasadniczo ignorował wszystko, co zostało pobrane ze strony interwebs, ale zezwala na to, aby wszystko, co pochodzi z twojej sieci, działało bezpłatnie. Prawdopodobnie nie jest to najlepsza praktyka, ale nie jest to TERRIBLE policy, jeśli możesz zaufać, że twoje repozytorium skryptów jest zabezpieczone.Jeśli nie, przejdź do czegoś mocniejszego niż to (możesz przeczytać zasady wykonywania, wpisując "Get-Help about_Execution_Policies" w zachęcie PowerShell lub odwiedzając stronę TechNet - zawartość powinna być podobna, jeśli nie identyczna) .

Drugi sposób polega na skrypcie Windows PowerShell. Jest to znacznie łatwiejsze do zrobienia. Zauważ, że musisz ustawić swoją strategię wykonywania na coś, co pozwoli na uruchamianie skryptów, ale potem będziesz płynnie żeglować.

. .\MyScript.ps1 

Nazywa się to "dot-sourcing" w twoim scenariuszu. Zaletą robienia tego z poziomu Windows PowerShell jest to, że jeśli masz coś w rodzaju skryptu pełnego funkcji, zostają one dodane do bieżącego zakresu (Get-Help about_Scopes), co oznacza, że ​​są one teraz dostępne w bieżącej sesji. Dobrym przykładem byłoby zdefiniowanie funkcji o nazwie "Test-DomainConnection" w skrypcie dystrybuowanym za pomocą głównego skryptu: Dostarczysz skryptowi źródłowym, który jest dystrybuowany razem z głównym (zazwyczaj jest to robione po oddzieleniu "standardu"). "PowerShell działa z głównego skryptu), a następnie korzysta z funkcji w głównym skrypcie. Istnieją pewne plusy i minusy tego podejścia, ale wydaje się, że jest to ogólnie zalecane (mogą istnieć pewne rozszerzenia społeczności, które usuwają potrzebę ręcznego zarządzania).

Aby uzyskać dodatkowe informacje, można zadzwonić pod numer Get-Help about_Scripts z poziomu Windows PowerShell. Ponieważ używasz systemu Windows 10, może być konieczne uruchomienie narzędzia Aktualizuj-Pomoc z administracyjnego okna PowerShell, zanim treść pomocy będzie dostępna w systemie lokalnym.

Jeśli masz więcej pytań, napisz do mnie:) Od pewnego czasu robię PowerShell i mogę Ci pomóc.

+0

Wow! Po pierwsze dziękuję bardzo! ISE ma wyraźnie więcej funkcji i będzie do tej pory interesujący do zbadania (najlepiej jak potrafię). Na pewno sprawdzę książkę Don Jone, bo wezmę całą pomoc, jaką mogę dostać! Teraz próbowałem tego, co poleciłeś, ale spotkałeś się z tym samym błędem, który wymieniłem powyżej. Jednak udało mi się uruchomić program, wpisując komendę: "C: \ Users \ blake_000 \ Desktop \ Scripts \ test.ps1" Czy jest jakieś ustawienie lub coś innego, co powinienem robić? , czy miałbym to robić przez cały czas? – GuyWantingBoat

+0

Hej @GuyWantingBoat, przepraszam, nie wróciłem na tę stronę już za kilka dni i nie widziałem komentarza opublikowanego wczoraj. Wymagane do wyżej wymienionej techniki dot-sourcingu wymaga podania pełnej ścieżki lub względnej ścieżki do skryptu. Więc jeśli element jest na pulpicie, powinieneś być w stanie osiągnąć ten sam wynik, wykonując następujące czynności: Położenie -Patencja "C: \ Użytkownicy \ blake_000 \ Pulpit" . . \ test.ps1 Można również uprościć to do następujących: cd $ env: userprofile \ Desktop – PSGuy

Powiązane problemy