Ich möchte ein alias
von einem erstellen cmdlet
, das nicht abläuft, nachdem ich die aktuelle Sitzung von Powershell geschlossen habe. Nehmen wir an, ich habe diesen Alias:
C:\Users\Aymen> New-Alias Goto Set-Location
Dadurch wird der Goto
Alias perfekt erstellt , aber ich möchte ihn auch nach Abschluss der aktuellen Sitzung verwenden. Wie kann ich das erreichen?
Hinweis:
Das PowerShell-Hilfesystem schlägt vor, dass ich die von mir erstellten Aliase exportieren und beim nächsten Öffnen einer neuen Sitzung importieren kann. Das ist eigentlich nicht das, wonach ich suche. Gibt es eine direkte eindeutige Möglichkeit, nach mir einen Alias zu haben? Erstellen Sie es durch verschiedene Sitzungen
powershell
AymenDaoudi
quelle
quelle
Antworten:
AKTUALISIERT - Jan 2017
Es ist möglich,
profile.ps1
jeden Powershell-Code, der bei jedem Start von Powershell ausgeführt werden soll , in einer Datei zu speichern . Es gibt mindestens 6 verschiedene Pfade, in denen der Code gespeichert werden kann, je nachdem, welcher Benutzer ihn ausführen muss. Wir können nur zwei davon betrachten: die Pfade "Alle Benutzer" und "Nur Ihr Benutzer".Um Ihre Frage zu beantworten, müssen Sie nur eine
profile.ps1
Datei erstellen , die den Code enthält, den Sie ausführen möchtenund speichere es auf dem richtigen Weg:
"$Home\Documents"
(C: \ Benutzer \ Ihr Name \ Dokumente): Nur Ihr Benutzer führt den Code aus.$PsHome
(C: \ Windows \ System32 \ WindowsPowerShell \ v1.0): Jeder Benutzer führt den Code aus.Um die Änderungen zu übernehmen, schließen Sie alle offenen Powershell-Instanzen und starten Sie sie neu.
TIPPS
Wenn beide Pfade eine
profile.ps1
Datei enthalten, wird zuerst der gesamte Benutzer ausgeführt, dann die benutzerspezifischen.Fügen Sie den Code immer in das benutzerspezifische Profil ein, wenn die Ausführung nicht auf jeden Benutzer ausgedehnt werden muss. Sie benötigen keine Administratorrechte, um die Datei zu Ihrem Benutzerbereich hinzuzufügen (andernfalls tun Sie dies), und Sie verschmutzen nicht den Bereich anderer Benutzer.
MERKEN! Der
$PsHome
Pfad unterscheidet sich zwischen 32-Bit- und 64-Bit-Instanzen von Powershell. Sie müssen also beide Umgebungen berücksichtigen, wenn Sie den Profilcode immer ausführen möchten. Normalerweise sind die PfadeC:\Windows\System32\WindowsPowerShell\v1.0
für die 64-Bit-Umgebung undC:\Windows\SysWow64\WindowsPowerShell\v1.0
für die 32- Bit-Umgebung .quelle
\Users\{ME}\Documents\WindowsPowerShell
und dann keinenMicrosoft.PowerShell_profile.ps1
der anderen Pfade hinzufügen, was für mich funktioniert."$HOME\Documents\WindowsPowerShell"
und BenennungMicrosoft.PowerShell_profile.ps1
den Bereich auf Nicht-ISE und auf den aktuellen Host, sollten jedoch keine Frage der Berechtigungen sein (gleich von"$Home\Documents\profile.ps1" should apply
). Vielleicht ist es nicht wirklich so, ich werde es versuchen, danke für die InformationNew-Item -path $profile -type file -force
die den Ordner und die Datei erstellt hatDocuments\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Es ist keine gute Idee,
$env:WINDIR
solche Dinge direkt zu Ihren Powershell-Ordnern hinzuzufügen.Der empfohlene Weg ist, es Ihrem persönlichen Profil hinzuzufügen:
Fügen Sie nun Ihren Alias zur Microsoft.PowerShell_profile.ps1-Datei hinzu, die jetzt geöffnet wird:
Speichern Sie es dann und aktualisieren Sie die aktuelle Sitzung mit:
Hinweis: Nur für den Fall, wenn Sie Berechtigungsprobleme wie erhalten
Versuchen Sie den folgenden Befehl und aktualisieren Sie die Sitzung erneut.
quelle
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
. Die-Scope
Option macht es ein bisschen sicherer.MyAlias
. Um Argumente weiterzugeben, verwenden Sie@Args
zBfunction gs { git status @Args }
Set-Alias
weil ich meine Methoden unter Verwendung der entsprechenden PS-Konventionen mit den entsprechenden Verben benennen möchte . Aber ja, wenn Sie nicht wählerisch sind, können Sie Ihre Methode einfach benennen, was auch immer Sie aufrufen möchten.2018, Windows 10
Sie können mithilfe eines einfachen PowerShell-Skripts eine Verknüpfung zu einer beliebigen Datei oder einem Verzeichnis herstellen.
Schreiben eines Dateiverknüpfungsskripts
Öffnen Sie Windows PowerShell ISE. Schreiben Sie im Skriptbereich:
Gehen Sie dann zum Befehlszeilenbereich. Suchen Sie Ihre PowerShell-Benutzerprofiladresse mit
echo $profile
. Speichern Sie das Skript unter dieser Adresse.Das Skript in der PowerShell-Profiladresse wird jedes Mal ausgeführt, wenn Sie Powershell öffnen. Die Verknüpfung sollte mit jedem neuen PowerShell-Fenster funktionieren.
Schreiben eines Verzeichnisverknüpfungsskripts
Es erfordert eine weitere Zeile in unserem Skript.
Der Rest ist genau das gleiche.
Aktivieren Sie PowerShell-Skripts
Standardmäßig sind PowerShell-Skripts blockiert. Um sie zu aktivieren, öffnen Sie Einstellungen -> Update & Sicherheit -> Für Entwickler. Wählen Sie den Entwicklermodus (möglicherweise muss neu gestartet werden). .
Scrollen Sie zum Abschnitt PowerShell, aktivieren Sie die Option "Ausführungsrichtlinie ändern ..." und wenden Sie sie an.
quelle
echo $profile
ist ein großartiger Tipp, um den richtigen Speicherort für die Datei zu finden. Vielen Dank für die umfassende AntwortEinfach. Beispielsweise...
Öffnen Sie ein Windows PowerShell-Fenster und geben Sie Folgendes ein:
Erstellen Sie dann eine Funktion wie:
Geben Sie dies dann unter dem Funktionsnamen ein:
Jetzt können Sie das Wort "google" in Windows PowerShell eingeben und den Code in Ihrer Funktion ausführen lassen!
quelle
Nur um dieser Liste möglicher Standorte hinzuzufügen ...
Das hat bei mir nicht funktioniert:
\Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Dies tat jedoch:
\Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Wenn Sie kein Profil haben oder ein Profil einrichten möchten, führen Sie den folgenden Befehl aus. Es erstellt den erforderlichen Ordner / die erforderlichen Dateien und teilt Ihnen sogar mit, wo es sich befindet!
New-Item -path $profile -type file -force
quelle
Geben Sie den folgenden Befehl ein, um die Datei profile1.psl zu erstellen:
neues Element $ PROFILE.CurrentUserAllHosts -ItemType-Datei -Force
Um auf die Datei zuzugreifen, geben Sie den nächsten Befehl ein:
ise $ PROFILE.CurrentUserAllHosts
Hinweis: Wenn Sie dies noch nicht getan haben, werden Sie feststellen, dass Sie das Skript aufgrund Ihrer Ausführungsrichtlinie, die Sie in "Uneingeschränkt von Eingeschränkt" (Standard) ändern müssen, nicht ausführen können.
Schließen Sie dazu das Skript und geben Sie den folgenden Befehl ein:
Set-ExecutionPolicy -Scope CurrentUser
dann:
RemoteSigned
dann nochmal diesen Befehl:
ise $ PROFILE.CurrentUserAllHosts
Geben Sie dann schließlich Ihre Aliase in das Skript ein, speichern Sie sie und sie sollten jedes Mal ausgeführt werden, wenn Sie Powershell ausführen, auch nach dem Neustart Ihres Computers.
quelle
Set-ExecutionPolicy RemoteSigned
. Empfehlen Sie nicht weiterUnrestricted
. Quelle: itprotoday.com/management-mobility/…Das ist ein bisschen schick ... aber es funktioniert:
Schritt 1: Erstellen Sie ein Powershell-Profil:
Schritt 2: dann in tools ~ / Documents / tools / profile.ps1:
Schritt 3:
$ Set-ExecutionPolicy -Scope CurrentUser Unrestricted $. ./install_profile.ps1
quelle