ฉันมีฟังก์ชั่นบางอย่างที่ฉันต้องการโหลดตามค่าเริ่มต้นเมื่อฉันเปิด PowerShell สำหรับผู้ดูแลระบบ มีอะไรที่เทียบเท่ากับการพูด.bashrc
หรือ.profile
ว่าฉันสามารถใช้เพื่อนำเข้าสคริปต์โดยอัตโนมัติเมื่อฉันเริ่มเปลือก?
ฉันมีฟังก์ชั่นบางอย่างที่ฉันต้องการโหลดตามค่าเริ่มต้นเมื่อฉันเปิด PowerShell สำหรับผู้ดูแลระบบ มีอะไรที่เทียบเท่ากับการพูด.bashrc
หรือ.profile
ว่าฉันสามารถใช้เพื่อนำเข้าสคริปต์โดยอัตโนมัติเมื่อฉันเริ่มเปลือก?
คำตอบ:
บทความที่กล่าวถึงในความคิดเห็นของ 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 เพื่อให้สิทธิ์การเข้าถึงเพื่ออ่านของบัญชีผู้ใช้ของคุณในขณะที่ยังช่วยให้ผู้ดูแลระบบสามารถควบคุมได้เต็มรูปแบบ (การสืบทอดจะต้องถูกปิดใช้งานก่อน) จากนั้นคุณจะสามารถแก้ไขสคริปต์จากโปรแกรมที่ยกระดับได้เท่านั้น
Microsoft.PowerShell_profile.ps1
สามารถเปลี่ยนเป็นเพียงprofile.ps1
? ในบทความแรกมันปรากฏเป็น$Home\[My ]Documents\WindowsPowerShell\Profile.ps1