2011-01-14 5 views

Odpowiedz

66

Użyj panelu poleceń. Otwórz plik skryptu w edytorze ISE, ustaw punkty przerwania (F9). Następnie w panelu poleceń wpisz polecenie wywołujące ten skrypt z wymaganymi parametrami. Nie sądzę, jest inny (wbudowany) sposób robienia tego w ISE.

+4

To podejście nie działało dla mnie, ponieważ mój plik zawierał spacje, rozwiązanie polegało na użyciu funkcji "ampersand-function" w następujący sposób: PS C: \ Windows> & ("c: \ my folder \ script" .ps1 ") -myArg 123 -anotherArg abc –

+0

Możesz właściwie użyć ścieżki względnej:. \ script.ps1 –

16
  1. Otwórz skrypt (myscript.ps1) w Windows PowerShell ISE
  2. Prasa F9 w zmiennej, którą chcesz sprawdzić (debug). Na przykład druga linia w poniższym przykładzie, w której przypisywana jest zmienna $ outputText
  3. W oknie powłoki podaj względną ścieżkę skryptu wraz z wartością parametru. Na przykład:. \ Myscript.ps1 „moja wartość”
  4. naciśnij Enter (nie trzeba trafić F5)
  5. będziesz w stanie zobaczyć punkty przerwania debugowania w wyróżniony żółtym kolorem. Ustaw kursor na wybranej zmiennej, aby sprawdzić aktualną wartość.

A sample showing PowerShell debugging with ISE and command parameter

+0

jak ta odpowiedź różni się od akceptowanej? – eckes

+1

Myśli, że wyjaśnienie większej ilości szczegółów za pomocą ilustracji będzie pomocne dla innych. Na przykład zapewnienie względnej (lub bezwzględnej) lokalizacji, której nie zapewniono w pierwszej kolejności. –

13

Jest też inny sposób. Możesz użyć zmiennej automatycznej $PSDefaultParameterValues, która istnieje (od wersji v3), aby dostarczyć nowe domyślne argumenty do poleceń cmdlet i zaawansowane funkcje (nie działa z normalnymi funkcjami). Jednak działa on dla skryptów, nawet podczas debugowania w ISE.

Tak dla przykładu,

param ($G_ARCHIVE = $(throw "Need file to upload!"), 
$G_LOGFILE = $(throw "Need logfile!")) 

byś wykonać coś takiego na wierszem ISE:

$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt") 
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log") 

Można również ustawić wartość parametru w bloku skryptu, który będzie automatycznie wykonać w czasie wykonywania:

$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={ 
    "Example-{0:yyMMddHHmm}.log" -f [datetime]::Now 
} 

Zmienna to hashtable i wszystkie standardowe aplikacje składniowe z wyjątkiem klucz musi mieć nazwę skryptu (lub funkcji zaawansowanej lub cmdlet), a następnie dwukropek, a następnie nazwę parametru. Można ustawić wartości domyślne dla wielu skryptów lub poleceń oraz wiele parametrów dla każdego (każdy parametr jest nowym wpisem do tabeli).

Robiąc to w ten sposób, możesz po prostu nacisnąć F5, aby uruchomić skrypt jak normalnie. Parametry zostaną pobrane ze zmiennej, więc nie musisz niczego wpisywać.

Inne przypadki użycia dla $PSDefaultParameterValues mogą być dostosowaniami, np. Czy Get-History ma tylko 10 ostatnich wpisów, chyba że określisz -Count parametr w komendzie. Ponieważ wpisy dotyczą tylko bieżącej sesji, warto dodać dostosowania do swojej profile.Możesz przeczytać więcej, wpisując Get-Help about_Parameters_Default_Values w monicie lub wyświetlić te same informacje na TechNet.

+0

Kolejny przykład bloku skryptu. Możliwe, że twój skrypt automatycznie użyje najnowszego pliku zip. '$ PsDefaultParameterValues ​​= [" ExampleScript.ps1: G_ARCHIVE "] = {(ls * .zip | sort lastwritetime | select -last 1) .fullname}' Tego typu rzeczy są bardzo przydatne, gdy ciągle tworzysz nowe wersje niektórych zewnętrznych zestaw danych do testowania i debugowania skryptu za pomocą. – PatrickFranchise

+0

$ PSDefaultParameterValues.Item ("KEY") = "VALUE" to kolejna alternatywa: – RichardOD

-1

Jest znacznie prostszy sposób ustawiania wymaganych parametrów w ISE:

Przed naciśnięciem F5 w ISE, ustawić parametr trzeba. Zwykle skomentować ten parametr muszę, przykład: # $ G_ARCHIVE = "c: \ temp \ TestFile_001.txt"

wybiorę wszystko po "#" i naciśnij F8. Następnym razem, gdy debuguję skrypt za pomocą F5, parametr jest ustawiony na wartość, którą testuję, bez potrzeby przekazywania parametrów przez linię poleceń.

+0

P.S. Działa tylko dla parametrów nieobowiązkowych –