PowerShell ช้ามากที่จะเปิด / ตอบสนอง


12

ฉันมีปัญหาในการใช้ PowerShell 3.0 บน Windows 7 64 บิต ใช้เวลานานมากในการเปิด / เริ่มทำงานเมื่อใช้งาน นอกจากนี้ยังค่อนข้างซบเซาในการตอบสนองต่ออะไรก็ได้

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

มีวิธีใดบ้างที่ฉันสามารถย้ายตำแหน่งของโปรไฟล์ของฉันเพื่อที่ฉันจะได้อยู่ภายในเครื่องแทนเครือข่าย


1
มันช้าสำหรับฉันเช่นกันและโปรไฟล์ของฉันคือการเข้าถึงไดรฟ์โดยตรง นอกจากนี้มันจะถูกอ่านครั้งเดียวโดยระบบปฏิบัติการแคชและปิดหลังจากเริ่มต้นดังนั้นเครือข่ายหรือไม่มันจะไม่มีผลอะไร นี่เป็นเพียงความพยายามของ MS ในการทำซ้ำพวงมาลัย แต่เป็นสี่เหลี่ยมจัตุรัส
v.oddou

คำตอบ:


17

PowerShell อาศัย . NET Frameworkคุณสามารถลองอัปเดตได้

สคริปต์นี้ช่วยฉันด้วยความเร็วด้วย

$Env:PATH = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
  $pt = $_.Location
  if (! $pt) {continue}
  if ($cn++) {''}
  $na = Split-Path -Leaf $pt
  Write-Host -ForegroundColor Yellow "NGENing $na"
  ngen install $pt
}

1
ขอบคุณ! ช่างแตกต่างกันมากหลังจากที่ฉันเรียกใช้สคริปต์นี้
WeSam Abdallah

3
มันทำอะไร?
Pureferret

2
การติดตั้ง ngen.exe:Generate native images for an assembly and its dependencies and install them in the Native Images Cache. If /queue is specified compilation job is queued up. If a priority is not specified, the default priority used is 3.
VertigoRay

ฉัน…ประหลาดใจและประทับใจ :-)
Chris F Carroll

1

คำตอบข้างต้นที่พูดถึง NGEN ลดเวลาเริ่มต้นของฉันจากกว่า 30 วินาทีเป็นต่ำกว่า 5

อย่างไรก็ตามฉันยังเห็นกรณีที่กดปุ่ม Ctrl-C หลังจากรอไม่กี่วินาทีทำให้ฉันได้รับพร้อมท์และฉันได้ทำเคล็ดลับ NGEN ข้างต้นแล้วและในกรณีนั้นฉันสงสัยว่าสคริปต์ของฉันจะทำให้ฉันทำงานช้าลง

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

หากคุณอยู่บน VM และโฮสต์ VM นั้นได้รับการ hogtied และ IO-ผูกไว้เหมือนสภาพแวดล้อม VM ส่วนใหญ่ที่ได้รับการจัดสรรและต่ำเกินไป


0

มีตำแหน่งเริ่มต้นที่แตกต่างกันสองสามโปรไฟล์ Powershell สามารถจัดเก็บได้

  • ตำแหน่งที่ตั้งแรกคือตำแหน่งที่ตั้งส่วนกลางและจะเป็นประโยชน์เมื่อคุณต้องการให้ผู้ใช้ทั้งหมดมีโปรไฟล์ Powershell ที่กำหนดเอง รายละเอียดนี้ควรอยู่ใน

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
    
  • ตำแหน่งที่สองใช้สำหรับโปรไฟล์โลคัลและจะเจาะจงสำหรับแต่ละบัญชีผู้ใช้ ไฟล์นี้จะแทนที่ไฟล์กำหนดค่าส่วนกลางและควรอยู่ใน

    C:\Username\My Documents\WindowsPowerShell\Profile.ps1
    

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


0

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

มันจบลงด้วยการที่ตัวแปรสภาพแวดล้อมของเส้นทางของฉัน ฉันมีสตริงพา ธ UNC ในตัวแปรพา ธ ของฉันและเกิดความล่าช้าเนื่องจาก PowerShell จะเปิด / ปิดการเชื่อมต่อสำหรับการดำเนินการแต่ละครั้ง (เช่นทุกครั้งที่คุณกดปุ่ม Enter)


2
UNC คืออะไร คุณแก้ไขมันอย่างไร
Tomáš Zato - Reinstate Monica

1
@ TomášZato - Universal Naming Convention (UNC) เป็นเส้นทางที่มีเครื่องหมายทับซ้ายหรือขวา ฉันเข้าใจความคิดเห็นนี้มา 4 ปีแล้วคิดว่าคุณอยากรู้เพราะไม่มีใครใส่ใจตอบคำถามของคุณ ฉันจะสมมติว่าผู้เขียนลบเส้นทาง UNC ออกจากตัวแปรระบบของพวกเขา
Ramhound

@Ramhound ขอบคุณ!
Tomáš Zato - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.