Praktyczny Powershell i ścieżki przechowywane w słowniku

Dzisiaj będzie o trickach związanych z powershell-em. Przez dłuższy czas rozważałem różne możliwości przemieszczania się po strukturze folderów.

Zlocation

O ile część problemów rozwiązuje narzędzie typu  https://github.com/vors/ZLocation i możliwość szybkiego „skakania” po folderach najczęściej przez nas używanych:  

(jak widzie sporo przyspiesza to pracę z konsolą) to w pewnych sytuacjach przydaje się jeszcze jedno ułatwienie.

Słownik

Jeżeli

  • nie pamiętamy nazwy folderu który chcemy wyszukać
  • chcemy przekazać gdzieś ścieżkę do jakiegoś naszego skryptu bądź też programu z zachowaniem elastyczności, możliwości jej późniejszej zmiany czy to na tym samym komputerze bądź też na komputerze innego użytkownika.

potrzebujemy czegoś innego. Najlepszym rozwiązaniem które do tej pory wymyśliłem to dedykowane zmienne w Powershell razem ze słownikiem, który je agreguje.

Tytułem wstępu, cały kod, który pojawia się poniżej ładujemy do naszego pliku $PROFILE w Powershell.

Przykładowo definiujemy zmienne:

$scripts = "C:\Users\g\dropbox\scripts"
$user = "C:\Users\g\"
$documents = [Environment]::GetFolderPath("mydocuments")
$projects = "C:\Projects"
$ctr="C:\projects\flashe"
$woxPluginsDev="c:\projects\WoxPlugins"
$templates="C:\Users\g\Dropbox\Scripts\Templates"

potem ładujemy je do słownika:

$paths = @{
profileDir = $profileDir;
scripts = $scripts;
user = $user;
...
}

A efekt w Powershell:

I w użyciu np:

Zmienne środowiskowe

Dlaczego nie użyć zmiennych środowiskowych?

Możesz zapytać. I słusznie. Równie dobrze możemy użyć zmiennych środowiskowych jeżeli np. dany skrypt ma działać u kogoś na komputerze. Jeśli chodzi jednak o nawigację to słownik ma 2 duże przewagi:

  1. Szybciej można użyć danej zmiennej w Powershell (tip: użyj Tab completion)
  2. Słownik może mieć tylko te wartości, których używasz na co dzień, dzięki temu nawigacja jest prostsza.

Na koniec proponuje jeszcze załadować nasze dane ze słownika do zmiennych środowiskowych, tak by rzeczywiście można było używać ich w przenośnych skryptach.

 $paths.Keys | % { [Environment]::SetEnvironmentVariable($_,$paths[$_])}

Teraz ty!

A teraz Ty, dodaj swoje ulubione ścieżki i ciesz się zaoszczędzonym czasem!

Dodaj komentarz