শেল প্রম্পটে কেবল বর্তমান ফোল্ডারের নাম প্রদর্শন করতে উইন্ডোজ পাওয়ারশেলটি কনফিগার করুন


37

আমি উইন্ডোজ in এ পাওয়ারশেল ব্যবহার করছি Pow পাওয়ারশেলকে কীভাবে কনফিগার করবেন যাতে এটি কেবল শেল প্রম্পটে বর্তমান ফোল্ডারের নামটি (পুরো পথের পরিবর্তে) প্রদর্শন করে?

উদাহরণস্বরূপ, পরিবর্তে C:\folder\directory\name>, আমি চাই name>

উত্তর:


57

আপনার পাওয়ারশেল প্রোফাইলে আপনাকে প্রম্পট ফাংশনটি কাস্টমাইজ করতে হবে ( %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1); এটি খালি হতে পারে এমনকি অস্তিত্বও না থাকলে আপনি যদি আগে কখনও এটি সংশোধন না করেন।

  1. আপনার প্রোফাইলটি খুলুন (উদাহরণস্বরূপ, পূর্বোক্ত ফাইলটি খুলুন বা পাওয়ারশেলে থাকাকালীন Notepad $profile)

  2. আপনার প্রোফাইলে নিম্নলিখিতগুলি যুক্ত করুন:

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  3. প্রোফাইল সংরক্ষণ করুন

  4. পাওয়ারশেল পুনরায় চালু করুন

    .চ্ছিক । যদি আপনি এমন একটি বার্তা পান যা জানিয়েছে যে আপনাকে স্ক্রিপ্টগুলি চালানোর অনুমতি নেই, তবে আপনাকে পাওয়ারসেলের মধ্যে এই লাইনটি অনুলিপি / আটকানো দরকার:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    এবং পুনরায় চালু করুন।

উইন্ডোজ পাওয়ারশেল কার্যকরকরণের নীতিগুলি আপনাকে সেই শর্তগুলি নির্ধারণ করতে দেয় যার অধীনে উইন্ডোজ পাওয়ারশেল কনফিগারেশন ফাইলগুলি লোড করে এবং স্ক্রিপ্টগুলি চালায়।

আপনি স্থানীয় কম্পিউটারের জন্য, বর্তমান ব্যবহারকারীর জন্য বা কোনও নির্দিষ্ট সেশনের জন্য একটি কার্যকরকরণের নীতি সেট করতে পারেন। কম্পিউটার এবং ব্যবহারকারীদের জন্য কার্যকরকরণের নীতি সেট করতে আপনি একটি গ্রুপ নীতি সেটিংও ব্যবহার করতে পারেন।

সূত্র: মাইক্রোসফ্ট ডকুমেন্টেশন


1
একদম ঠিক না। [System.IO.Directory]::GetCurrentDirectory()পাওয়ারশেলের বর্তমান অবস্থানের প্রতিনিধিত্ব করে না, বরং প্রক্রিয়া কার্যকারী ডিরেক্টরি যা সর্বদা এক নয়। এর সাথে প্রতিস্থাপন করুনGet-Location
zdan

+1, তবে আমি পরিবর্তে গেট-অবস্থান ব্যবহার করব GetCurrentDirectory। মনে রাখবেন যে পাওয়ারশেল সবসময় ফাইল সিস্টেমকে বোঝায় না। রেজিস্ট্রি স্ন্যাপ-ইন ব্যবহার করে, আমি ব্যবহার করতে পারি cd hkcu:এবং এখন প্রম্পটটি সম্পূর্ণ বন্ধ হয়ে যাবে।
vcsjones

@ সাইনটেক এটি ফর্ম্যাটিং সহায়তাটিতে বেশ গভীরভাবে সমাহিত করা হয়েছে :
Bob

1
$PWDকল করার পরিবর্তে আপনিও ব্যবহার করতে পারেন Get-Location। যেমনfunction prompt { (Split-Path -Leaf $pwd) + '> ' }
জোয়

1
আপনাকে promptআপনার প্রোফাইল ফাইলে কোনও সংজ্ঞা দিতে হবে না । এটি কেবলমাত্র বিশ্বব্যাপী অধিবেশন সুযোগে থাকতে হবে। ডিফল্টটিকে সমান মনে হয় function prompt {"PS " + (Get-Location) + ">"}, যখন function prompt {""}একইটি দেয় function prompt {"PS>"}function prompt {" `b"}একটি খালি প্রম্পট পেতে ব্যবহার করুন (কমপক্ষে দৃশ্যত ...)।
মাস্টারেক্সিলো

5

অতিরিক্ত নোট হিসাবে, আমি প্রথম created প্রোফাইল তৈরি না করা পর্যন্ত @ সিনিটেকের কমান্ডটি করতে পারিনি।

  1. পাওয়ারশেল খুলুন
  2. লিখুন $profileএবং এন্টার লিখুন। এটি পাওয়ারফেলের উপর নির্ভর করে প্রোফাইল পাথ প্রদর্শন করবে, যদিও এটি বিদ্যমান না থাকলেও (এটি আমার পক্ষে নয়)। আমার পথটি সাইনটেক উপরের পোস্টের চেয়ে আলাদা ছিল।

    >$profile
    C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    
  3. আমাকে উইন্ডোজপাওয়ারশেল ফোল্ডার এবং মাইক্রোসফ্ট.পাওয়ারশেল_প্রফিল.পিএস ফাইল দুটি তৈরি করতে হয়েছিল।

  4. @ সিনিটেকের কোড যুক্ত করুন এবং পাওয়ারশেল পুনরায় চালু করুন।

বিঃদ্রঃ:

যদি আপনি পশ-গিট ব্যবহার করেন (যা গিটহাব ডেস্কটপ ব্যবহার করার সময় ইনস্টল করা হয়), @ স্নেটিচের স্ক্রিপ্টটি পশ-গিট প্রম্পটকে ওভাররাইড করবে। এখানে পশ-গিটের জন্য অতিরিক্ত প্রম্পট স্ক্রিপ্টগুলি ।


1
এটা একই. %userprofile%এতে প্রসারিত হয়C:\Users\[username]
ডেভিডপস্টিল

@ ডেভিডপস্টিল এটি ছিল আমার বোঝাপড়া, তবে আমার পাওয়ারশেল% ব্যবহারকারী প্রোফাইল% কে ডিরেক্টরি হিসাবে স্বীকৃতি দেয়নি। আমি বিশ্বাস করি না যে আমার পাওয়ারশেলটি এখনও সেই রাস্তাগুলি সনাক্ত করতে এখনও অনুকূলিত হয়েছে, সম্ভবত নেটওয়ার্ক সেটিংসের কারণে?
ব্রায়ান

2
পাওয়ারশেলের সিনট্যাক্সটি ভিন্ন: $Env:userprofileসমানecho %userprofile%
ডেভিডপস্টিল

আইএসই বনাম $ প্রোফাইলের আলাদা মান রয়েছে নিয়মিত প্রম্পটে, আপনাকে 2 টি ফাইল তৈরি করতে হতে পারে।
ক্রিস

3

সম্পূর্ণ পাথ ছাড়াই বর্তমান ফোল্ডারটি দেখানোর জন্য প্রম্পটটি এবং শেষে প্রতীকের চেয়ে বড় পরিবর্তন করুন:

একটি উপায় হতে পারে:

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

বা:

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

বা:

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

প্রথম এবং তৃতীয়টি গ্রহণযোগ্য উত্তরের চেয়ে ভাল যে তারা নেটওয়ার্ক ফোল্ডারের জন্য কাজ করে। স্প্লিট-পাথের মতো পথে সঠিকভাবে কাজ করবে না \\myserver\my\path
ক্রিস

2

আমি এটি দেখতে পেয়েছি যে এটি বেশ সহজ ছিল - @ সিনিটেকের উত্তর এবং পাওয়ারশেলের প্রোফাইলগুলিতে পাওয়া তথ্যের সংমিশ্রণ । কারণ আমি পিএসের নবাগত। আমার পদক্ষেপগুলি (ভিসকোডের জন্য):

  1. পরীক্ষার পথ $ প্রোফাইল (পিএস কমান্ড প্রম্পটে - সেখানে কোনও প্রোফাইল সেট আপ আছে?)
  2. নতুন-আইটেম -পথ $ প্রোফাইল -itemtype ফাইল-ফোর্স (উপরের উত্তরটি মিথ্যা বলে ধরে নেওয়া)
  3. নোটপ্যাড $ প্রোফাইল (নোটপ্যাড খোলে)
  4. আটকান

    function prompt {
      $p = Split-Path -leaf -path (Get-Location)
      "$p> "
    }
    
  5. সংরক্ষণ করুন (আপনার কোনও অবস্থান চয়ন করা উচিত নয়, এটি ইতিমধ্যে আপনার জন্য সম্পন্ন হয়েছে)
  6. পুনরায় লোড করুন vscode - আপনি সম্ভবত স্ক্রিপ্টগুলি চালনা সম্পর্কে বার্তা পাবেন (বা পুনরায় লোডের আগে কেবল পরবর্তী পদক্ষেপটি করবেন)
  7. সেট-এক্সিকিউশনপলিসি রিমোটসাইনড -স্কোপ কারেন্ট ইউজার (আপনার পিএস প্রম্পটে, সুপার ইউজ উত্তর থেকে)

  8. vscode পুনরায় লোড করুন

তাই বেশিরভাগই @ সিনিটেকের উত্তর (আপভোটেড) সহজেই শুরু করার জন্য কিছুটা - বিশেষত দ্বিতীয় ধাপ এটিকে খুব সহজ করে তোলে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.