web-dev-qa-db-ja.com

シェルプロンプトに現在のフォルダー名のみを表示するようにWindows Powershellを構成する

Windows 7でPowershellを使用しています。Powershellを構成して、シェルプロンプトに現在のフォルダー名(完全なパスではなく)のみを表示する方法は?

たとえば、代わりにC:\folder\directory\name>、 が欲しいです name>

42
Veera

PowerShellプロファイル(%userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1)のPrompt関数をカスタマイズする必要があります。これまでに変更したことがない場合は、空白であるか、存在しないこともあります。

  1. プロファイルを開きます(たとえば、前述のファイルを開くか、PowerShellでNotepad $profile

  2. 以下をプロファイルに追加します。

    function Prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  3. プロファイルを保存します

  4. PowerShellを再起動します

    オプション。スクリプトの実行が許可されていないというメッセージが表示された場合は、次の行をPowerShellにコピーして貼り付ける必要があります。

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    そして再起動します。

Windows PowerShell実行ポリシーを使用すると、Windows PowerShellが構成ファイルを読み込んでスクリプトを実行する条件を決定できます。

ローカルコンピューター、現在のユーザー、または特定のセッションに対して実行ポリシーを設定できます。グループポリシー設定を使用して、コンピューターとユーザーの実行ポリシーを設定することもできます。

出典: Microsoft Documentation

67
Synetech

追加のメモとして、私は最初に$ profileを作成するまで@Synetechのコマンドを実行できませんでした。

  1. PowerShellを開く
  2. タイプ$profileと入力してEnterキーを押します。これにより、PowerShellが存在しない場合でも、PowerShellが依存するプロファイルパスが表示されます(私にとってはそうではありませんでした)。私のパスは、@ Synetechが上記に投稿したものとは異なりました。

    >$profile
    C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    
  3. WindowsPowerShellフォルダーとMicrosoft.PowerShell_profile.ps1ファイルの両方を作成する必要がありました。

  4. @Synetechのコードを追加して、PowerShellを再起動します。

注意:

Posh-git(GitHubデスクトップの使用時にインストールされます)を使用している場合、@ Synetechのスクリプトはposh-gitプロンプトをオーバーライドします。 posh-gitの追加のプロンプトスクリプト here

5
Bryan

プロンプトを変更して、現在のフォルダをフルパスなしで最後に「より大きい」記号で表示します。

1つの方法は次のとおりです。

Function Prompt { "$( ( get-item $pwd ).Name )>" }

または:

Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }

または:

Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
5
Jelgab

@Synetechの回答と PowerShellプロファイル にある情報を組み合わせて、これはかなり簡単であることがわかりました。私はPSの初心者なので。私の手順(vscodeの場合):

  1. test-path $ profile(PSコマンドプロンプト内-プロファイルが設定されていますか?)
  2. new-item -path $ profile -itemtype file -force(上記の答えがfalseであると想定)
  3. notepad $ profile(メモ帳を開きます)
  4. 貼り付ける

    function Prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  5. 保存します(場所を選択する必要はありません。すでに行われています)。
  6. vscodeのリロード-おそらくスクリプトの実行に関するメッセージが表示されます(またはリロードの前に次のステップを実行します)
  7. Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(PSプロンプトで、SuperUse回答から)

  8. vscodeをリロード

したがって、@ Synetechの回答(賛成)は、簡単に始めるためのビットが含まれているため、特にステップ2を使用すると、非常に簡単になります。

2
Mark

以下の単一行は私にとってはうまくいきます

(Get-Location | Get-Item).Name

1
Cannon Earnest