Hat Powershell irgendeine Art von .bashrc-Entsprechung?

20

Ich möchte einige Funktionen standardmäßig laden, wenn ich eine administrative PowerShell öffne. Gibt es eine gleichwertige zu sagen , .bashrcoder .profiledass ich verwenden könnte , um automatisch die Skripten zu importieren , wenn ich die Shell starten?

leeand00
quelle
Möglicherweise PowerShell-Profil ( blogs.technet.microsoft.com/heyscriptingguy/2012/05/21/… )?
16.
Ja, in Powershell wird es einfach "Profil" genannt.
Root

Antworten:

22

Der Artikel in erwähnter jehad Kommentar erklärt , dass es mehrere Orte , von denen Powershell ein Profil laden kann, das ist , was Sie wollen. Wahrscheinlich möchten Sie einen Benutzer für die normale PowerShell-Konsole. Der Pfad, unter dem PowerShell nach dieser Datei sucht, ist in der $profileVariablen angegeben. Sie können diese Datei und das zugehörige Verzeichnis mit diesem Befehl erstellen:

New-Item $profile -Type File -Force

Es erstellt eine Datei, die Microsoft.PowerShell_profile.ps1in einem Ordner aufgerufen wird, der sich WindowsPowerShellunter Ihrem Ordner "Dokumente" befindet. Dann können Sie es mit einem Texteditor öffnen:

notepad $profile

Alles, was sich darin befindet, wird ausgeführt, wenn Sie die PowerShell-Konsole starten, unabhängig davon, ob Sie einen erhöhten Status haben oder nicht. In diesem anderen Artikel habe ich eine Funktion erstellt (die Sie als Cmdlet verwenden können), um zu überprüfen, ob die aktuelle PowerShell-Instanz erhöht ist. Fügen Sie dies in Ihre neue Profildatei ein:

Function Test-Elevated {
  $wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  $prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
  $adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
  $prp.IsInRole($adm)
}

Diese Funktion kann in Ihrer normalen PowerShell-Umgebung verwendet werden. Sie können sie jedoch auch verwenden, um nur Inhalte in Ihrem Profilskript auszuführen, wenn Sie mit erhöhten Rechten arbeiten:

If (Test-Elevated) {
  echo "Be careful!"
} Else {
  echo "Eh, do whatever."
}

Da diese Datei Code enthält, der auch unter einer PowerShell-Verwaltungsinstanz automatisch ausgeführt wird, möchten Sie nicht, dass Programme, die ohne Berechtigung ausgeführt werden, Schreibzugriff darauf haben. Ich empfehle, die Zugriffssteuerungsliste so zu ändern, dass nur Ihr Benutzerkonto Lesezugriff hat und Administratoren weiterhin die volle Kontrolle haben. (Die Vererbung muss zuerst deaktiviert werden.) Sie können das Skript dann nur in erweiterten Programmen bearbeiten.

Ben N
quelle
3
Kann dieser lange Name in Microsoft.PowerShell_profile.ps1nur geändert werden profile.ps1? Im ersten Artikel erscheint es als$Home\[My ]Documents\WindowsPowerShell\Profile.ps1
Neffe