45

Chcę utworzyć alias o cmdlet że nie wygasa po tym, jak zamknąć bieżącą sesję PowerShell, powiedzmy, że mam ten alias:Jak stworzyć trwały PowerShell Aliasy

C:\Users\Aymen> New-Alias Goto Set-Location 

Ten doskonale tworzy Goto alias, ale chcę go użyć nawet po zamknięciu bieżącej sesji, jak mogę to osiągnąć.

Uwaga:

System PowerShell Pomoc sugeruje, że mogę eksportować aliasy I tworzyć i importować je następnym razem mogę otworzyć nową sesję, w rzeczywistości, że naprawdę nie jest to, czego szukam, bo jest istnieje bezpośredni klarowny sposób, aby zachować posiadające alias po utworzeniu go przez różnych sesji

Odpowiedz

37

AKTUALNE - Jan 2017

jest to możliwe, aby zapisać w pliku profile.ps1 dowolny kod PowerShell należy wykonać każdy t ime powershell zaczyna. Istnieje co najmniej 6 different paths gdzie przechowywać kod w zależności od tego, który użytkownik musi go wykonać. Możemy wziąć pod uwagę tylko 2 z nich: "wszyscy użytkownicy" i ścieżki "tylko twój użytkownik".

Tak, aby odpowiedzieć na to pytanie trzeba tylko stworzyć plik profile.ps1 zawierający kod, który ma być wykonany, że jest

New-Alias Goto Set-Location 

i zapisać go w odpowiedniej ścieżce:

  • "$Home\Documents" (C: \ Users \ yourname \ Documents): tylko twój użytkownik wykona kod.
  • $PsHome (C: \ Windows \ System32 \ WindowsPowerShell \ v1.0): każdy użytkownik wykona kod.

Aby zastosować zmiany, zamknij wszystkie otwarte wystąpienia powłoki powershell i uruchom je ponownie.

TIPS

  • Jeżeli obie ścieżki zawierać plik profile.ps1 cały jeden użytkownik jest wykonywany, potem użytkownicy specyficzny.

  • Zawsze umieszczaj kod w profilu użytkownika, jeśli nie ma potrzeby przedłużania jego wykonywania każdemu użytkownikowi. Nie potrzebujesz uprawnień administratora, aby dodać plik do przestrzeni użytkownika (w przeciwnym razie robisz) i nie zanieczyszczasz przestrzeni innych użytkowników.

  • PAMIĘTAJ! Ścieżka $PsHome różni się między 32-bitowymi i 64-bitowymi instancjami powłoki powershell, więc jeśli chcesz zawsze wykonać kod profilu, musisz wziąć pod uwagę oba środowiska. Zazwyczaj ścieżki to C:\Windows\System32\WindowsPowerShell\v1.0 dla środowiska 64-bitowego i C:\Windows\SysWow64\WindowsPowerShell\v1.0 dla ścieżek 32-bitowych.

+1

to nie działa –

+1

@gerdi co zrobiłeś i jaki błąd dostałeś? – Naigel

+2

nie błąd po prostu nie działa, nie jestem pewien, czy jest to problem uprawnień. Właściwie to zmusiłem go do pracy (powinienem to skomentować wcześniej). Musiałem utworzyć folder '\ Users \ {ME} \ Documents \ WindowsPowerShell', a następnie dodać' Microsoft.PowerShell_profile.ps1' non z innych ścieżek działa dla mnie. –

42

Nie jest dobrym pomysłem dodawanie tego rodzaju rzeczy bezpośrednio do folderów Power Shell $env:WINDIR.
Zalecanym sposobem jest dodanie go do osobistego profilu:

cd $env:USERPROFILE\Documents 
md WindowsPowerShell -ErrorAction SilentlyContinue 
cd WindowsPowerShell 
New-Item Microsoft.PowerShell_profile.ps1 -ItemType "file" -ErrorAction SilentlyContinue 
powershell_ise.exe .\Microsoft.PowerShell_profile.ps1 

Teraz dodać alias do pliku Microsoft.PowerShell_profile.ps1 który jest teraz otwarty:

function Do-ActualThing { 
    # do actual thing 
} 

Set-Alias MyAlias Do-ActualThing 

Następnie zapisz go i odświeżyć bieżącą sesję:

. $profile 
+1

Świetny komentarz. Bardzo jasne, chociaż mój powerhell nie ma dotyku. – JustinB

+0

@JustinB spróbuj 'nowej pozycji ' –

+3

Aby umożliwić wykonanie skryptu mojego profilu, musiałem wykonać jeszcze jeden krok. Uruchom Powershell jako administrator i wykonaj 'Set-ExecutionPolicy RemoteSigned -Scope CurrentUser'. Opcja '-Scope' sprawia, że ​​jest trochę bezpieczniejsza. – zombat

4

utworzyć plik profile1.psl, wpisz następującą komendę:

nowej pozycja $ PROFILE.CurrentUserAllHosts -ItemType złożyć -force

uzyskać dostępu do pliku, wpisz w następnym poleceniem:

ise $ PROFILE.CurrentUserAllHosts

note jeśli nie zrobiłeś tego wcześniej, zobaczysz, że nie będziesz w stanie uruchomić skryptu z powodu twoich zasad wykonania, które musisz zmienić na Unrestricted z Restricted (domyślnie).

to zrobić zamknąć skrypt a następnie wpisz polecenie:

Set-ExecutionPolicy -Zakres CurrentUser

następnie:

RemoteSigned

potem znowu to polecenie:

ise $ PROFILE.CurrentUserAllHosts

wreszcie wpisać swoje aliasy w skrypcie, zapisz go i powinny prowadzony za każdym razem uruchomić PowerShell, nawet po ponownym uruchomieniu komputera.

+2

Prawdopodobnie chcesz: 'Set-ExecutionPolicy RemoteSigned'. Nie idź za poleceniem 'Nieograniczony'. Źródło: http://www.itprotoday.com/management-mobility/running-powershell-scripts-easy-1-2-3 – PhilT

6

Wystarczy dodać do tej listy możliwych miejsc ...

ta nie działa dla mnie: \Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Jednak to nie: \Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Jeśli nie masz profil lub chcesz go skonfigurować, uruchom następujące polecenie, utworzy niezbędny folder/pliki, a nawet powie Ci, gdzie się znajduje! New-Item -path $profile -type file -force