คุณตั้งค่าไดเรกทอรีเริ่มต้นของ PowerShell ได้อย่างไร


112

มีวิธีเปลี่ยนตำแหน่งเริ่มต้นของ PowerShell หรือไม่?

คุณตั้งค่าไดเรกทอรีการทำงานเริ่มต้นของ PowerShell ได้อย่างไร


1
นี่คือวิธีที่คุณสามารถทำได้ผ่านการแก้ไขทางลัด: stackoverflow.com/questions/18726981/…
Blundering Philosopher

@BlunderingPhilosopher That's for git shell .. ?
Vivek Chavda

1
@VivekChavda Yep
Blundering Philosopher

คำตอบ:


61

คุณสามารถระบุไดเร็กทอรีที่จะเปิดเมื่อเริ่ม PowerShell:

powershell.exe -NoExit -command "& {Set-Location $env:systemroot}"

เพียงแค่ใช้ในทางลัดของคุณ

หรือใช้โปรไฟล์เพื่อตั้งค่าไดเร็กทอรีเริ่มต้น


5
สำหรับ PS Core:pwsh.exe -WorkingDirectory C:\YourLocation\Goes\Here
Sergey Zykov

"C: \ Program Files \ PowerShell \ 6 \ pwsh.exe" -WorkingDirectory D: \ test
cem kaan

182

สร้างโปรไฟล์ PowerShellดังต่อไปนี้

  1. เรียกใช้ PowerShell ในฐานะผู้ดูแลระบบและดำเนินการคำสั่งต่อไปนี้:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    สิ่งนี้จะอนุญาตให้ PowerShell เรียกใช้สคริปต์ในเครื่องและสคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ตที่ได้รับการลงนาม อ่านเพิ่มเติมเกี่ยวกับคำสั่งนี้ในเอกสาร

  2. ในDocumentsโฟลเดอร์ของคุณค้นหาโฟลเดอร์ที่มีชื่อWindowsPowerShellสำหรับ PowerShell แบบคลาสสิกหรือPowerShellสำหรับ PowerShell Core ที่ใหม่กว่า ถ้าไม่มีก็ไม่เป็นไร เพียงแค่สร้างมัน

  3. สร้างไฟล์ใหม่ที่มีชื่อprofile.ps1ในWindowsPowerShellโฟลเดอร์ (หรือPowerShellสำหรับ PowerShell Core)
  4. เปิดprofile.ps1และเพิ่มคำสั่งต่อไปนี้เพื่อตั้งค่าไดเร็กทอรีการทำงานเริ่มต้นของคุณ:

    Set-Location C:\my\default\working\directory
  5. เปิดหน้าต่าง PowerShell ใหม่ ... การเปลี่ยนแปลงควรมีผล


1
ฉันลองแล้ว แต่รับ "profile.ps1 ไม่สามารถโหลดได้เพราะปิดใช้งานสคริปต์อยู่" มีวิธี "ปลอดภัย" ในการเปิดใช้งานสคริปต์ที่ปลอดภัยหรือไม่?
John Little

3
เรียกใช้สิ่งนี้: "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned" คุณสามารถอ่านได้ที่นี่: technet.microsoft.com/en-us/library/ee176961.aspx ไม่อนุญาตให้สคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ตทำงานเว้นแต่จะมาจากที่เชื่อถือได้ แหล่งที่มา
LLL

7
นี่เป็นวิธีที่แย่มากในการทำเช่นนี้เพราะหากคุณมีสคริปต์การสร้าง (เช่นสคริปต์การสร้างภาพสตูดิโอ) และคุณต้องการเรียกใช้คำสั่ง ps ไดเรกทอรีการทำงานของคำสั่งจะถูกตั้งค่าเป็นตำแหน่งนั้นดังนั้นโดยพื้นฐานแล้ว ทำลายสคริปต์ทั้งหมดโดยใช้ powershell เช่นpowershell -File "myscript.ps1"
Santhos

2
หากเป็นตัวเลือกที่ไม่ดีมีวิธีที่ดีกว่า / ปลอดภัยกว่านี้ไหม
Adam_G

4
ให้ฉันแก้ไขตัวเอง เมื่อเขียนสคริปต์ powershell เช่นสำหรับบิลด์ให้ใช้ตัวเลือก -NoProfile เสมอเช่นpowershel -NoProfile -File "myscript.ps1"
Santhos

33

ฉันได้ลองทำตามคำตอบข้างต้นในWindows Server 2016 แล้วไม่ประสบความสำเร็จ

แต่ฉันพบว่าวิธีนี้ (ควรจะเหมือนกันสำหรับ Windows 10) ได้ผลสำหรับฉัน

  1. เริ่มเซสชัน PowerShell
  2. ในแถบงานคลิกขวาแล้วปักหมุดเพื่อเก็บลิงก์ไว้ที่นั่น
  3. คลิกขวาที่ไอคอนในทาสก์บาร์อีกครั้งจากนั้นคลิกขวาที่Windows PowerShellแล้วเลือกคุณสมบัติ
  4. ป้อนไดเร็กทอรีที่คุณต้องการในฟิลด์Start in: input และกด OK
  5. เริ่มจากไอคอนแถบงาน

เสร็จแล้ว!

ในเดียวกันคุณสมบัติโต้ตอบคุณยังสามารถเปลี่ยนการตั้งค่าอื่น ๆ เช่นแบบอักษรสีขนาดและบนทางลัดAdvancedแท็บมีผ่านทางปุ่ม คุณสามารถเลือกได้ว่าจะเรียกใช้เซสชัน PowerShell ด้วยสิทธิ์ของผู้ดูแลระบบหรือไม่


5
การเปลี่ยนไดเร็กทอรีการทำงานดูเหมือนจะไม่ทำงานเมื่อคุณตรวจสอบRun as administratorใน.lnkเมนูขั้นสูง ทางออกน่าจะอยู่ที่นี่stackoverflow.com/questions/31622469/…
Santhos

มันแปลกมากเพราะมันใช้งานได้ที่นี่ เพิ่งทดสอบด้วยการเปลี่ยน dir และเปลี่ยนRun as aministratorcheckbox ไปมา
neongrau

ใช้งานได้อย่างมีเสน่ห์ ขอบคุณ.
Yasser Shaikh

13

วิธีที่ง่ายกว่าในการตั้งค่าไดเรกทอรีเริ่มต้นมีดังต่อไปนี้:

  1. คลิกขวาที่ไอคอน Windows PowerShell แล้วปักหมุดที่ Start
  2. คลิกขวาที่ไอคอน Windows PowerShell ใน Start และคลิกขวาอีกครั้ง Windows PowerShell และเลือก Properties (ไม่ใช่Run as Administratorและไม่ใช่Windows PowerShell ISE )

    ใส่คำอธิบายภาพที่นี่

    1. ในแท็บทางลัด -> ฟิลด์ "เริ่มใน" ให้เปลี่ยนเป็นตำแหน่งที่คุณต้องการให้ PowerShell เริ่มทำงาน

    ใส่คำอธิบายภาพที่นี่


โอขอบคุณฉันชอบคำตอบนี้ ช่วยให้ฉันเข้าใจสาเหตุและไดเรกทอรีใดจึงถูกตั้งเป็น "ค่าเริ่มต้น" ฉันคิดว่าโซลูชันนี้ยังช่วยลดต้นทุนเวลาค่าใช้จ่ายในการโหลดโปรไฟล์ได้เล็กน้อย (ไม่แน่ใจว่าจริงหรือไม่ แต่รู้สึกเหมือนกัน)
Jennings

4

การใส่Set-Locationลงในโปรไฟล์ของคุณจะเปลี่ยนไดเร็กทอรีการทำงานปัจจุบันโดยไม่มีเงื่อนไขซึ่งอาจมีผลที่ไม่พึงประสงค์เกี่ยวกับไดเร็กทอรีการทำงานสำหรับสคริปต์ที่คุณดำเนินการผ่าน "run with PowerShell"

อีกทางเลือกหนึ่งคือการเปลี่ยนไดเร็กทอรีการทำงานสำหรับ.lnkไฟล์เป็น PowerShell ที่มักพบใน%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell. คลิกขวาที่ลิงค์และเปลี่ยนไดเร็กทอรีการทำงานจาก%HOMEDRIVE%%HOMEPATH%เป็นไดเร็กทอรีที่คุณต้องการ


1
การเปลี่ยนไดเร็กทอรีการทำงานดูเหมือนจะไม่ทำงานเมื่อคุณตรวจสอบRun as administratorใน.lnkเมนูขั้นสูง ทางออกน่าจะอยู่ที่นี่stackoverflow.com/questions/31622469/…
Santhos

นี่เป็นทางออกที่ดีที่สุด (สำหรับฉันอย่างน้อยที่สุด)
Anders Arpi

นั่นคือเหตุผลที่สคริปต์ควรใช้-NoProfileตัวเลือกเช่น powershell -NoProfile -File "myscript.ps1"
Santhos


3

แทนที่จะเปลี่ยนไดเร็กทอรีการทำงานโดยไม่มีเงื่อนไขตามที่กล่าวไว้ในคำตอบก่อนหน้านี้คุณสามารถเขียนฟังก์ชันง่ายๆในโปรไฟล์ PowerShell เพื่อใช้Set-Locationเปลี่ยนไดเร็กทอรีการทำงานได้อย่างรวดเร็วเมื่อจำเป็น

ตรวจสอบคำตอบของ Jeremy Danyowเพื่อสร้าง / แก้ไขโปรไฟล์ PowerShell

เพิ่มฟังก์ชันลงในโปรไฟล์ PowerShell ของคุณ:

function goto_this {set-location 'your\path\to\some\dir'}
function goto_that {set-location 'your\path to some\dir with space'}

เพียงแค่เปลี่ยนชื่อฟังก์ชันและไดเร็กทอรีที่ชี้ไป การใช้เครื่องหมายคำพูดบนเส้นทางเป็นสิ่งจำเป็นหากมีช่องว่าง ฉันพยายามคงคำนำหน้าไว้goto_เพราะมันช่วยในการจำชื่อฟังก์ชัน

คุณสามารถเริ่มพิมพ์goto_จากนั้นกด TAB เพื่อหมุนเวียนฟังก์ชันที่เพิ่มทั้งหมด (อย่าลืมเริ่มหน้าต่าง PowerShell ใหม่หลังจากเพิ่ม / แก้ไขฟังก์ชัน)


1

ใช้เพียงบรรทัดคำสั่งหากมีไฟล์อยู่แล้วไฟล์จะต่อท้าย:

$(if (-Not (Test-Path ~\Documents\WindowsPowerShell\)){ mkdir ~\Documents\WindowsPowerShell\}) ; echo "Set-Location c:\THELOCATIONYOUWANT" >> ~\Documents\WindowsPowerShell\profile.ps1

1

ด้วยเหตุนี้ดูเหมือนว่าจะมีความสับสนใน "ไดเรกทอรีการทำงาน" และ "ตำแหน่ง" ของ PowerShell สิ่งที่คนส่วนใหญ่ที่นี่กำลังทำและบอกว่าจะทำคือเปลี่ยน "ตำแหน่ง" ของ PowerShell "ไดเรกทอรีการทำงาน" แตกต่างกันจริง นี่คือบทความที่อธิบาย

สำหรับผู้ที่ไม่ต้องการที่จะอ่านบทความ: เปิด PowerShell Set-Location "C:\some\directory"และการใช้สิ่งที่คนอื่นได้กล่าวว่าจะทำอย่างไร โปรดสังเกตว่า "ไดเรกทอรีการทำงาน" ของคุณยังคงเป็นที่ที่ PowerShell ของคุณเปิดอยู่ อย่างใดอย่างหนึ่ง"~"หรือ"%SYSTEMROOT%\system32"ขึ้นอยู่กับว่าคุณทำงานในฐานะผู้ดูแลระบบหรือไม่ ในการตรวจสอบไดเร็กทอรีการทำงานให้ใช้[Environment]::CurrentDirectory.

หมายเหตุ:ในบทความผู้เขียนบอกว่าให้ตรวจสอบ "ไดเรกทอรีการทำงาน" โดยใช้คำสั่งนี้:

\[Environment\]::CurrentDirectory

ผมไม่แน่ใจว่าถ้างานนี้กับรุ่นเก่า PowerShell แต่มี PowerShell 5 (และต่อมา) [Environment]::CurrentDirectoryคุณต้องใช้



0

กำหนดให้เป็นบรรทัดแรกใน Profile.ps1 และ PowerShell Core (pwsh) จะเปิดขึ้นในไดเร็กทอรีที่คุณกำลังทำงานอยู่:

set-location (รับตำแหน่ง) .path


0

โซลูชันนี้ตั้งค่าโฟลเดอร์การทำงานปัจจุบันไปยังตำแหน่งที่สคริปต์ตั้งอยู่ อย่าลืมวางไว้ที่จุดเริ่มต้นของสคริปต์ของคุณหรืออย่างน้อยก่อนที่คุณจะพยายามใช้คำสั่งโดยอาศัยเส้นทางตำแหน่ง

Set-Location (Split-Path $MyInvocation.MyCommand.Path)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.