
管理用 PowerShell を開いたときにデフォルトでロードしたい関数がいくつかあります。シェルの起動時にスクリプトを自動的にインポートするために使用できる、.bashrc
同等の機能はありますか?.profile
答え1
記事言及されているjehadのコメントPowerShell がプロファイルをロードできる場所がいくつかあることが説明されていますが、これが必要なことです。通常の PowerShell コンソールでは、ユーザーごとのプロファイルが必要になるでしょう。PowerShell がそのファイルを確認するパスは、変数で指定されます$profile
。次のコマンドを使用して、そのファイルとそのファイルを含むディレクトリを作成できます。
New-Item $profile -Type File -Force
Microsoft.PowerShell_profile.ps1
Documents フォルダの下のというフォルダにというファイルが作成されますWindowsPowerShell
。その後、テキスト エディタで開くことができます。
notepad $profile
その中にあるすべてのものは、権限が昇格されているかどうかに関係なく、PowerShellコンソールを起動するたびに実行されます。私はこの他の記事現在の 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 を変更することをお勧めします (継承を最初に無効にする必要があります)。そうすると、スクリプトを編集できるのは管理者権限を持つプログラムからのみになります。