PowerShell 64-bit treo trên máy mới


2

Gần đây tôi có một máy tính mới với nhiều mã lực và nó hoạt động rất nhanh ở mọi nơi trừ PowerShell.

Môi trường:

  • Dell XPS 8930 (i7-8700K, RAM 32 GB, SSD NVMe 1TB)
  • Windows 10 Pro với các bản cập nhật mới nhất (1809 / 10.0.17763)
  • PowerShell 5.1.17763.316 và PowerShell Core 6.1.1
  • Tôi còn rất nhiều bộ nhớ (> 16GB) và CPU gần như không hoạt động trong khi nó bị treo.
  • Chỉ Windows Defender (không có phần mềm chống vi-rút khác)

Một số triệu chứng dường như phù hợp:

  • Mở PowerShell hiển thị thông tin bản quyền và treo ở đó trong 2 phút trước khi hiển thị lời nhắc.
  • Tôi bắt đầu gõ một lệnh và phải mất gần một phút để văn bản xuất hiện
  • Khi văn bản xuất hiện, tôi có thể sửa đổi lệnh và nó sẽ phản hồi.
  • Tôi nhập một lệnh đơn giản như echo 'hello'và nhấn enter, mất khoảng 45 giây để 'xin chào' xuất hiện trên màn hình và 45 giây nữa để quay lại dấu nhắc.
  • Một lần tại dấu nhắc gõ một lệnh là phản hồi, nhưng việc chạy nó lại chậm.
  • Chạy dirlệnh trong thư mục nhà của tôi (một vài tệp / thư mục): khoảng 2:30 trước khi liệt kê thư mục, 15 giây nữa để quay lại dấu nhắc.

Một số đã cố gắng khắc phục sự cố:

  • PowerShell ISE: Mất khoảng 5 phút để nhắc nhở.
  • PowerShell ISE (x86): Nó hoạt động nhanh!
  • PowerShell (x86): Cũng hoạt động nhanh!
  • PowerShell Core: Cũng rất chậm.
  • Bảng điều khiển kế thừa PowerShell: Không thay đổi.
  • Mở một dòng lệnh thông thường và chạy powershell -NoProfile: Không thay đổi.
  • sfc /scannow: Không có vấn đề được tìm thấy, khởi động lại không giúp đỡ.
  • Vô hiệu hóa kết nối mạng: Không thay đổi.
  • Chạy Sysiternals procmon: Không có gì rõ ràng, nhưng dường như nó luôn bị treo ngay sau một số thao tác "Thoát luồng".
  • Nhìn vào ngăn xếp luồng trong Sysiternals procexp: Khi nó treo, luồng chính luôn ở ntdll.dll ZwWaitForMultipleObjects.
  • Gỡ cài đặt WSL / Hyper-V: Không thay đổi.
  • Chạy "Microsoft .NET Framework Repair Tool" và khởi động lại, không thay đổi.
  • Kiểm tra C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline, chỉ có một tệp 4KB.
  • $PSModuleAutoloadingPreference = 'none': không thay đổi. Tôi sẽ không tưởng tượng việc chạy một trong các lệnh cơ bản như echonhiều lần sẽ luôn cố tải các mô-đun.
  • netsh http show iplist:

Địa chỉ IP có trong danh sách nghe IP:

127.0.0.1
  • Kích hoạt WinRM ( winrm quickconfig): Dịch vụ bắt đầu nhưng sau đó không thể kết nối.
    • Tôi có thể thấy cổng 5985 đang được lắng nghe bởi PID 4 khi dịch vụ được khởi động.
    • Tường lửa Windows có hai mục "Quản lý từ xa Windows (HTTP-In)" cho cổng 5985 (cho phép mọi địa chỉ từ xa khi ở trong mạng / hồ sơ cá nhân).
    • Tôi có thể thành công telnet localhost 5985
    • Sau khi dịch vụ WinRM bắt đầu, phải mất khoảng 7 phút để phản hồi:

WSManFault ...

Số lỗi: -2144108250 0x80338126 WinRM không thể hoàn thành thao tác. Xác minh rằng tên máy tính được chỉ định là hợp lệ, máy tính có thể truy cập được qua mạng và ngoại lệ tường lửa cho dịch vụ WinRM được bật và cho phép truy cập từ máy tính này. Theo mặc định, ngoại lệ tường lửa WinRM cho các cấu hình công khai giới hạn quyền truy cập vào các máy tính từ xa trong cùng một mạng con cục bộ.

Tính nhất quán trong độ trễ khiến tôi nghĩ rằng có một số loại kết nối và thời gian chờ đã cố gắng, nhưng tôi không biết điều gì có thể xảy ra. Bất kỳ bậc thầy nào ngoài kia với ý tưởng?


Một điều khác tôi nhận thấy có thể có hoặc không liên quan: khi tôi tải xuống một tệp trong Chrome, nó sẽ đạt 100% và sau đó ngồi ở đó trong gần 30 giây trước khi tôi có thể mở / hiển thị trong thư mục.
Nelson Rothermel

Bạn đã cài đặt phiên bản PowerShell nào, PowerShell 5.1 được cài đặt theo mặc định trên Windows 10, nhưng bạn có thể đã cài đặt PowerShell Core. Bạn vẫn cài đặt cùng một sản phẩm bảo mật, nếu vậy hãy chỉnh sửa câu hỏi của bạn và bao gồm thông tin quan trọng cần thiết để trả lời câu hỏi của bạn. Vui lòng cung cấp thông tin liên quan từ, Netsh http show iplist , sẽ xác minh lý thuyết của tôi.
Ramhound

Hãy thử: (1) Xem nếu bạn có một tệp khổng lồ C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadlinevà loại bỏ nó. (2) Tạo một shortcut đến %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exevà trong Properties> Tùy chọn thiết lập Sử dụng di sản console , (3) Cố gắng gọi PowerShell với -NoProfileswitch, (4) Tắt PowerShell Mô-đun Autoload .
harrymc

@NelsonRothermel Ngoài ra, tôi sẽ thử .... 1.từ lệnh nâng cao lệnh quản trị viên sfc /scannowhãy để nó hoàn thành, khởi động lại, thử lại. 2.Vẫn gặp sự cố, hãy thử chạy công cụ microsoft.com/en-us/doad/details.aspx?id=30135 chỉ trong trường hợp, chạy nó, khởi động lại, thử lại.
Pimp Juice IT

@harrymc: Yep, đã bận rộn với những thứ khác nhưng chỉ cần thêm chi tiết. Chỉ có tệp 4KB trong đường dẫn đó, tôi đã thử giao diện điều khiển cũ và -NoProfile, vô hiệu hóa tự động tải mô-đun không giúp được gì. @Ramhound: Tôi không còn có Bitdefender, cả PowerShell Core và thông thường đều chậm. Tôi đã bao gồm netshđầu ra trong câu hỏi của tôi. @PimpJuice: Đã thử sfc, công cụ sửa chữa .NET không giúp được gì.
Nelson Rothermel

Câu trả lời:


1

Có thể có một sản phẩm 64 bit được cài đặt khác đang làm chậm PowerShell. Để kiểm tra, khởi động vào chế độ An toàn để tắt tất cả các sản phẩm và trình điều khiển của bên thứ ba. Nếu vấn đề biến mất, bạn có thể sử dụng Autoruns để vô hiệu hóa ứng dụng khởi động trong chùm và khởi động lại cho đến khi bạn tìm thấy một trong những quyền.

Một khả năng khác là độ trễ được gây ra bởi một số tiện ích bổ sung 64 bit mà bạn đã cài đặt. Công cụ sử dụng ở đây là Process Explorer để so sánh các DLL được sử dụng bởi cả hai phiên bản PowerShell 64 bit và 32 bit.

Trong menu View của Process Explorer, bật "Show Lower Pane" và trong "Lower Pane View> DLLs", chọn "DLLs". Sử dụng Ctrl+ Ađể lưu danh sách dưới dạng tệp văn bản, sau đó sử dụng sản phẩm so sánh tệp để so sánh cả hai kết quả sau khi sắp xếp. Bạn có thể đơn giản hóa việc tìm kiếm bằng cách giới hạn danh sách được hiển thị chỉ tên của các DLL, bằng cách nhấp chuột phải vào tiêu đề và chọn "Chọn Cột ...".


Tôi đã thử chế độ an toàn thông thường (không có kết nối mạng / lệnh) và nó không hoạt động, nhưng đó là một ý tưởng tuyệt vời! Tôi sẽ tìm hiểu thêm về Process Explorer vào ngày mai.
Nelson Rothermel

Chơi lô tô! Chỉ cần nhìn vào danh sách 64 bit tôi đã thấy một DLL McAfee đáng ngờ vì Dell đã cài đặt sẵn nhưng tôi đã gỡ cài đặt. Tôi vẫn so sánh hai danh sách và không có gì khác ngoài vị trí. Thêm / Xóa Chương trình không có gì cả nên tôi đã sử dụng công cụ Loại bỏ Sản phẩm Tiêu dùng của McAfee, khởi động lại và bây giờ mọi thứ lại nhanh chóng. Chrome cũng không còn tạm dừng sau khi tải xuống. Bây giờ tôi cần phải tìm ra cách để giúp bạn có được tiền thưởng kể từ khi tôi nghĩ rằng nó chỉ hết hạn. :( Tôi có thể cần phải đạt được nhiều đại diện hơn và sau đó khởi động lại một.
Nelson Rothermel

Cụ thể, thủ phạm McAfee DLL AMSIExt.dllđược đặt tại C:\Program Files\mcafee\mfeav\amsiext.dll.
Nelson Rothermel

Và cảm ơn vì đã gắn bó với tôi! Tôi biết một vài ngày bạn nói "Những ý tưởng hoàn toàn cuối cùng" nhưng vẫn cho tôi thêm một vài điều nữa.
Nelson Rothermel

3

Tôi có Acronis True Image với bảo vệ ransomware. Tôi đã tìm thấy True Image có phần lỗi / không đáng tin cậy vì vậy nó sẽ không làm tôi ngạc nhiên nếu đó là thủ phạm.

Tôi cũng đã cài đặt nó. Nó không phải là thủ phạm.

Khi tôi chạy netsh http show iplistnó sẽ hiển thị các thông tin sau.

IP addresses present in the IP listen list:
-------------------------------------------

Đó là những gì sẽ được hiển thị khi lệnh được chạy.

Có bất kỳ bậc thầy nào ngoài kia với những ý tưởng?

Bạn cần chạy lệnh sau trong dấu nhắc PowerShell nâng cao.

netsh http delete iplisten ipaddress=127.0.0.1

ngay lập tức đầu ra netstat -anp tcpsẽ như sau:

> PS C:\> netstat -anp tcp

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:903            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:913            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49759          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49830          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49921          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54235          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54236          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58091          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58101          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58607          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:62401          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:843          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1120         0.0.0.0:0              LISTENING
  TCP    192.168.0.11:64811     24.105.29.76:443       ESTABLISHED
  TCP    192.168.0.11:64828     52.114.76.37:443       TIME_WAIT
  TCP    192.168.0.11:65133     23.79.18.217:443       CLOSE_WAIT
  TCP    192.168.0.11:65135     17.248.136.9:443       CLOSE_WAIT
  TCP    192.168.120.1:139      0.0.0.0:0              LISTENING
  TCP    192.168.174.1:139      0.0.0.0:0              LISTENING

Nguồn: Remote PowerShell, Lỗi WinRM: WinRM không thể hoàn thành thao tác


Tôi đã xóa mục nhập và PowerShell vẫn chậm. Tuy nhiên, nó đã cho phép tôi cài đặt WinRM mà không gặp bất kỳ lỗi nào, mặc dù điều đó cũng không giúp ích gì cho sự chậm chạp.
Nelson Rothermel

Tôi đã giải quyết lỗi, với nhiều biến, liên quan đến vấn đề tốc độ.
Ramhound

Bạn đã đúng, Acronis không phải là thủ phạm.
Nelson Rothermel

0

Cảm ơn bình luận chống vi-rút tại https://stackoverflow.com/questions/45021585/powershell-hangs-on-launch ! Tôi đã cài đặt Bitdefender Antivirus. Vô hiệu hóa nó đã không khắc phục vấn đề, nhưng gỡ cài đặt đã làm. Tôi đã thử cài đặt lại và vấn đề xuất hiện trở lại. Thêm tất cả C:\vào danh sách loại trừ không khắc phục được vấn đề.

Cập nhật 2/20: Tôi vẫn gỡ cài đặt Bitdefender Antivirus nhưng sự cố đã xuất hiện trở lại vài tuần trước.


0

Hãy thử chặn truy cập mạng tại tường lửa. Điều này sẽ loại trừ PowerShell đang chờ trên các tài nguyên bên ngoài.

Nếu bạn chặn tất cả các kết nối mạng cho Powershell, nó sẽ trông như thế này

VÍ DỤ QUY TẮC:

Powershell        All    Yes    Block    No    %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe    Any    Any    Any    Any    Any    Any    Any    Any    Any    

Powershell2        All    Yes    Block    No    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe    Any    Any    Any    Any    Any    Any    Any    Any    Any    

Nếu điều đó không làm việc, vấn đề là nội bộ. Có thể dễ dàng hơn để chạy lại thiết lập Windows 10:

  • Chọn nút Bắt đầu
  • Chọn cài đặt
  • Chọn Cập nhật & bảo mật
  • Chọn Phục hồi
  • Trong Đặt lại PC này, chọn Bắt đầu.

Cảm ơn lời đề nghị, nhưng thật không may, nó đã không tạo ra sự khác biệt. Tôi đã thử ngắt kết nối khỏi tất cả các mạng mà tôi cho là sẽ hoạt động theo cách tương tự và mọi yêu cầu mạng sẽ ngay lập tức thất bại.
Nelson Rothermel

Tôi đã thêm một đề nghị để thiết lập lại.
HackSlash

Chắc chắn, cài đặt lại / đặt lại Windows có thể sẽ hoạt động. Tôi sợ phải làm điều đó nhưng nó có thể chỉ là lựa chọn cuối cùng. Nếu tôi tiếp tục với điều đó, tôi sẽ mở PowerShell từng bước để nếu nó chậm lại một lần nữa tôi biết nguyên nhân. Tôi thậm chí đã cân nhắc việc mở một vé với Microsoft vì tôi muốn hiểu điều gì gây ra nó, nhưng tôi nghĩ rằng tôi sẽ cài đặt lại trước.
Nelson Rothermel

Suy nghĩ thứ hai, trước khi cài đặt lại, tôi có thể thử gỡ bỏ một số phần mềm cấp thấp hơn mà tôi có nhiều khả năng gây ra sự cố. Ví dụ: tôi có Acronis True Image với bảo vệ ransomware. Tôi đã tìm thấy True Image có phần lỗi / không đáng tin cậy vì vậy nó sẽ không làm tôi ngạc nhiên nếu đó là thủ phạm.
Nelson Rothermel

@NelsonRothermel - Đó không phải là thủ phạm
Ramhound
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.