PowerShell มี. bashrc เทียบเท่าหรือไม่


22

ฉันมีฟังก์ชั่นบางอย่างที่ฉันต้องการโหลดตามค่าเริ่มต้นเมื่อฉันเปิด PowerShell สำหรับผู้ดูแลระบบ มีอะไรที่เทียบเท่ากับการพูด.bashrcหรือ.profileว่าฉันสามารถใช้เพื่อนำเข้าสคริปต์โดยอัตโนมัติเมื่อฉันเริ่มเปลือก?


อาจเป็นโปรไฟล์ PowerShell ( blogs.technet.microsoft.com/heyscriptingguy/2012/05/21/21 )?
jehad

ใช่ใน Powershell มันถูกเรียกอย่างชัดเจนว่า "โปรไฟล์"
root

คำตอบ:


23

บทความที่กล่าวถึงในความคิดเห็นของ jehadอธิบายว่ามีหลายแห่งที่ PowerShell สามารถโหลดโปรไฟล์ซึ่งเป็นสิ่งที่คุณต้องการ คุณอาจต้องการผู้ใช้หนึ่งรายสำหรับคอนโซล PowerShell ปกติ พา ธ ที่ PowerShell จะตรวจสอบไฟล์นั้นได้รับใน$profileตัวแปร คุณสามารถสร้างไฟล์นั้นและไดเรกทอรีที่มีมันด้วยคำสั่งนี้:

New-Item $profile -Type File -Force

มันสร้างไฟล์ที่เรียกว่าMicrosoft.PowerShell_profile.ps1ในโฟลเดอร์ที่เรียกว่าWindowsPowerShellภายใต้โฟลเดอร์เอกสารของคุณ จากนั้นคุณสามารถเปิดด้วยโปรแกรมแก้ไขข้อความ:

notepad $profile

ทุกอย่างในนั้นจะทำงานทุกครั้งที่คุณเปิดคอนโซล PowerShell ไม่ว่าคุณจะได้รับการยกระดับหรือไม่ก็ตาม ฉันใช้บทความอื่นนี้เพื่อสร้างฟังก์ชั่น (ซึ่งคุณสามารถใช้เป็น cmdlet) เพื่อตรวจสอบว่าอินสแตนซ์ 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 เพื่อให้สิทธิ์การเข้าถึงเพื่ออ่านของบัญชีผู้ใช้ของคุณในขณะที่ยังช่วยให้ผู้ดูแลระบบสามารถควบคุมได้เต็มรูปแบบ (การสืบทอดจะต้องถูกปิดใช้งานก่อน) จากนั้นคุณจะสามารถแก้ไขสคริปต์จากโปรแกรมที่ยกระดับได้เท่านั้น


3
ชื่อยาวที่Microsoft.PowerShell_profile.ps1สามารถเปลี่ยนเป็นเพียงprofile.ps1? ในบทความแรกมันปรากฏเป็น$Home\[My ]Documents\WindowsPowerShell\Profile.ps1
หลานชาย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.