PowerShellプロファイルの一部のスクリプトを微調整していて、Powershellを終了して再起動するのが面倒なので、プロファイル内のスクリプトに加えた変更をロードします。終了せずにPowerShellセッションを再起動することは可能ですか?
あなたはただ行うことができます. $profile
は、プロファイルを再度ソースします。
@manojldsの答えは正しいですが、エラーがスローされる可能性があります。たとえば、プロファイルに新しいPSDriveを定義した場合、それを再ドットソーシングするとエラーが発生する可能性があります。
別のアプローチは、最初にPowerShellを起動し、次にPowerShellと入力するだけですぐに別のバージョンを起動することです。ネストされたコンソールでプロファイルを変更し、終了してからPowerShellを再実行して、更新されたプロファイルをテストします。
別のこと-プロファイルの変更はゆっくりと慎重に行ってください。私の考えでは、プロファイルは進化する必要がありますが、その進化は通常遅いはずです。 YMMV !!
簡単な関数を作成して$profile
に追加できます(またはモジュールを作成して '$ profile'にインポートします)。次に例を示します。
function Restart-PowerShell{
Start-Process PowerShell # Launch PowerShell Host in new window
exit # Exit existing PowerShell Host window
}
# Add any alias if you want, for ex. rps (rp already occupied by "Remove-ItemProperty”)
Set-Alias -Name rps -Value Restart-PowerShell
注:これは、質問のタイトルに「終了しない」と書いたものとは正確には異なる場合がありますが、実質的に、元々の目的は、何らかの種類のPowerShellホストの再起動コマンド(PSでは使用できない)にすることでした。デフォルトでは)それから仕事をします...
これにより、同じコンソールウィンドウで新しいセッションが開始され、プロファイルがリロードされます。
Invoke-Command { & "powershell.exe" } -NoNewScope
もちろん、前のセッションからすべての変数などが失われます。
これが@Badの答えの拡張です。これでISEが処理されるようになります(私はいつもそれを使用しているため)。
ISEを使用している場合は、ISEが再起動します。単純なPowerShellを使用している場合は、単純なPowerShellが再起動されます。 Get-PSHostProcessInfo
は、現在のPowerShellセッションに関する情報を返します。これにより、ISEを実行しているかどうかを判断できます。
function Restart-PowerShell
{
if((Get-PSHostProcessInfo).ProcessName.Contains('powershell_ise'))
{
Start-Process 'powershell_ise.exe'
} else {
Start-Process 'powershell.exe'
}
exit
}