
當我打開管理 powershell 時,我想預設載入一些功能。是否有任何等效的說法.bashrc
或.profile
我可以用來在啟動 shell 時自動導入腳本?
答案1
文章中提到的傑哈德的評論解釋說 PowerShell 可以從多個位置載入設定文件,這正是您想要的。您可能需要針對普通 PowerShell 控制台的每個使用者控制台。 PowerShell 檢查該檔案的路徑在$profile
變數中給出。您可以使用以下命令建立該檔案及其包含目錄:
New-Item $profile -Type File -Force
它會在「文件」資料夾下的Microsoft.PowerShell_profile.ps1
資料夾中建立一個名為的檔案。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,僅授予您的使用者帳戶讀取存取權限,同時仍允許管理員完全控制。 (必須先停用繼承。)然後您將只能從提升的程式編輯腳本。