
Zobacz jak szybko zmienić logi serwera Internet Information Services (IIS) w PSCustomObject. Dzięki temu dalsze analizowanie informacji o żądaniach do serwera IIS to czysta przyjemność 😉
Continue ReadingZobacz jak szybko zmienić logi serwera Internet Information Services (IIS) w PSCustomObject. Dzięki temu dalsze analizowanie informacji o żądaniach do serwera IIS to czysta przyjemność 😉
Continue Reading
By Mateusz Nadobnik • 3 marca, 2021
Większość automatyzacji, funkcji i skryptów PowerShell opiera się na danych wejściowych. Dane to procesujemy w najróżniejszy sposób – sprawdzamy, oczyszczamy, porównujemy, wzbogacamy, aby na wyjściu podjąć odpowiednie działania.
Najczęstszym sposobem wprowadzania danych do funkcji jest określanie wartości parametrów. Często jednak potrzebujemy danych z różnych źródeł w masowej ilości.
Dlatego poniżej 6 poleceń/skryptów PowerShell do pobierania danych z sześciu różnych lokalizacji.
Continue Reading
By Mateusz Nadobnik • 21 lipca, 2020
Windows PowerShell to dojrzały język skryptowy oparty na .Net, którego od początku ogromną zaletą jest obiektowość, ale nie tylko. O tym dlaczego warto poznać PowerShell pisałem chociażby, tutaj – 9 powodów dlaczego warto (dobrze) znać PowerShell
Dlatego nie przedłużając zapraszam, do poznania podstawowych komendy i pojęć związanych z PowerShell, które wg mnie pozwalają na pierwsze kroki w interaktywnej pracy z tym rozwiązaniem.
Continue Reading
By Mateusz Nadobnik • 26 czerwca, 2020
Prawdopodobnie, jeśli jesteś tutaj, to zastanawiasz się, czy warto inwestować swój czas w naukę PowerShell.
Poniżej 9 punktów, które w mojej opinii przemawiają za tym, że warto.
Continue Reading
By Mateusz Nadobnik • 17 maja, 2020
Wiele poradników, książek, kursów o PowerShell zaczyna od podstawowych cmdletów takich jak Get-Command i Get-Help. Sam również polecam się z nimi zapoznać, jeśli zaczynasz naukę PowerShell.
Mimo że polecenia realizują inne zadania, to mają jedną wspólną rzecz. Dzięki jednemu i drugiemu poznasz składnie interesujących Cię poleceń.
By Mateusz Nadobnik • 11 kwietnia, 2020
Nowy rok jest zawsze dobrym momentem na nowe wyzwania, postanowienia, nawet jeśli głośno o nich nie mówimy. Jeśli w Twoim celem jest nauka PowerShell lub poszerzenie wiedzy na jego temat to ten post jest dla Ciebie.
Poniżej znajdziesz zebrane zasoby, które pomogą Ci uczyć się PowerShell w 2020 roku.
Continue Reading
By Mateusz Nadobnik • 6 stycznia, 2020
Dzisiaj zacznę nietypowo. Spójrz na poniższy fragment kodu i odpowiedź na pytane. Czy to zadziała?
Jeśli od razu pomyślałeś, „nie ma mowy” to problem z przeniesieniem zmiennych lokalnych do poleceń zdalnych nie jest Ci obcy. Jeśli jednak miałeś wątpliwości (spoko, sporo osób je ma) to zapraszam Cię do wpisu, w którym wyjaśniam, dlaczego nie mogło to zadziałać.
Wszystkiemu winny jest…
Z zakresem sesji trzeba się zmierzyć, nie tylko używając Invoke-Command
ale również Start-Job
.
Lokalny skrypt jest wykonywany w zakresie innej sesji niż blok skryptu wykonany przez Invoke-Command
lubStart-Job
. Zdefiniowane zmienne $Path
i $Desintation
istnieją tylko w naszej (lokalnej) sesji. Natomiast w zdalnej po prostu ich nie ma, więc mają wartość $null
.
Wykonaj poniższy przykład aby przekonać się, że to napisałem to prawda.
Działa to tak a nie inaczej, ponieważ PowerShell zakłada, że zmienne używane w zdalnych poleceniach zostaną tam zdefiniowane. Czyli PowerShell domyślnie oczekuje czegoś takiego.
Jest to jakieś rozwiązanie, jednak znacznie częściej będziesz chciał przekazać wartości z lokalnego skryptu (sesji) do sesji zdalnej. Co wtedy?
Zobacz 3 podejścia przeniesienia zmiennych lokalnych do poleceń zdalnych.
$args
Wykorzystaj parametr -ArgumentList
polecenia Invoke-Command
lub Start-Job
do przekazania wartości zmiennych. Wartości te trafią (nie zawsze) do automatycznej zmiennej $args
, którą wykorzystasz w bloku skryptu.
Zmienna $args
jest tablicą, dlatego pierwszą wartość znajdziesz w $args[0]
, drugą w $args[1]
i tak dalej.
Wykorzystaj w bloku skryptu, blok parametrów tak jak w skrypcie lub funkcji. Określ niezbędne parametry, których wartość następnie przekażesz podobnie jak wyżej, poprzez -ArgumentList
.
Jeśli blok skryptu ma zadeklarowane parametry to zmienna automatyczna $args
jest pomijana (stąd te nie zawsze), chyba że argumentów w -ArgumentList
będzie więcej niż parametrów w bloku param()
.
Począwszy od PowerShell 3.0, sprawa uproszczono maksymalnie. Wystarczy skorzystać z modyfikatora zakresu Using:<nazwa zmiennej>
aby przenieść zmienną lokalną do zdalnego polecenia.
W tym podejściu -ArgumentList
jest kompletnie niepotrzebny. Tylko oznaczamy modyfikatorem w bloku skryptu, które zmienne lokalne zostaną użyte w zdalnej sesji.
We wpisie wyjaśniłem, dlaczego występuje problem z przeniesienia zmiennych lokalnych do poleceń zdalnych i jak sobie z nim radzić.
Ostatnia sprawa, jeśli nie musisz zapewniać kompatybilności z PowerShell 2.0 to wykorzystuj w pierwszej kolejności modyfikator sesji Using:
.
Źródła:
By Mateusz Nadobnik • 26 listopada, 2019
AkademiaPowershell to blog napędzany ogromną użytecznością i pasją do PowerShell.