当我打开管理 powershell 时,我希望默认加载一些函数。是否有等效的.bashrc
或.profile
我可以使用的功能在启动 shell 时自动导入脚本?
答案1
文章提到jehad 的评论解释了 PowerShell 可以从几个地方加载配置文件,这正是您想要的。您可能想要普通 PowerShell 控制台的每个用户配置文件。PowerShell 将检查该文件的路径在变量中给出$profile
。您可以使用以下命令创建该文件及其包含目录:
New-Item $profile -Type File -Force
Microsoft.PowerShell_profile.ps1
它会在 Documents 文件夹下的文件夹中创建一个名为的文件WindowsPowerShell
。然后您可以使用文本编辑器打开它:
notepad $profile
无论你是否被提升权限,只要你启动 PowerShell 控制台,其中的所有内容都会运行。我使用了另一篇文章生成一个函数(您可以将其用作 cmdlet)来检查当前 PowerShell 实例是否已提升权限。将其放入您的新配置文件中:
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)
}
该函数可以在您的常规 PowerShell 体验中使用,但您也可以在提升权限运行时使用它来仅运行配置文件脚本中的内容:
If (Test-Elevated) {
echo "Be careful!"
} Else {
echo "Eh, do whatever."
}
由于此文件包含即使在管理 PowerShell 实例下也会自动运行的代码,因此您不希望未提升权限运行的程序拥有对它的写权限。我建议更改其 ACL,以仅授予您的用户帐户读取权限,同时仍允许管理员完全控制。(必须先禁用继承。)然后您只能从提升权限的程序编辑脚本。