web-dev-qa-db-ja.com

Powershellには、同等の.bashrcがありますか?

管理PowerShellを開いたときに、デフォルトでロードしたい関数がいくつかあります。シェルの起動時にスクリプトを自動的にインポートするために使用できる.bashrcまたは.profileと同等のものはありますか?

25
leeand00

記事jehadのコメント に記載されているように、PowerShellがプロファイルをロードできる場所がいくつかあると説明しています。おそらく、通常のPowerShellコンソール用にユーザーごとのものが必要です。 PowerShellがそのファイルをチェックするパスは、$profile変数で指定されます。次のコマンドを使用して、そのファイルとそのファイルを含むディレクトリを作成できます。

New-Item $profile -Type File -Force

Documentsフォルダーの下のWindowsPowerShellというフォルダーにMicrosoft.PowerShell_profile.ps1というファイルを作成します。次に、テキストエディタで開くことができます。

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を変更することをお勧めします。 (最初に継承を無効にする必要があります。)その後は、昇格されたプログラムからのみスクリプトを編集できます。

25
Ben N