it-swarm-vi.tech

Đạt được các đặc quyền của quản trị viên trong PowerShell

Tôi chỉ có một tài khoản trên máy Windows Vista của mình và người dùng đó có quyền quản trị. Tuy nhiên, khi tôi cố gắng thực thi một lệnh trong PowerShell để giết một quy trình nhất định, tôi được chào đón với thông báo "Truy cập bị từ chối". Làm thế nào để tôi trở thành quản trị viên?

29
Brian

Cách dễ nhất để làm điều này là khởi chạy Powershell với mã thông báo quản trị. Để thực hiện việc này, bạn nhấp chuột phải vào Powershell (hoặc lối tắt đến nó) và nhấp vào "chạy với tư cách quản trị viên". Ngoài ra, bạn có thể sử dụng elevate.cmd .

14
Knox

Cách Powershell v2, theo Microsoft , là nhấp chuột phải vào phím tắt và chọn Chạy với tư cách Quản trị viên .

Và để nâng lên trong cửa sổ Powershell:

start-process powershell –verb runAs

Mà từ tệp bó cmd.exe, lối tắt hoặc dòng Run sẽ trông giống như thế này (lặp đi lặp lại) như thế này:

powershell "start-process powershell -verb runas"
26
Nathan Hartley

Điều này mở ra một thể hiện quyền hạn mới:

function Run-Elevated ($scriptblock)
{
  # TODO: make -NoExit a parameter
  # TODO: just open PS (no -Command parameter) if $scriptblock -eq ''
  $sh = new-object -com 'Shell.Application'
  $sh.ShellExecute('powershell', "-NoExit -Command $scriptblock", '', 'runas')
}

Tôi hy vọng rằng có vấn đề với điều này - đặc biệt, bạn sẽ không nhận được đầu ra của scriptblock của mình trong tập lệnh gọi. Mặt khác, nó sẽ ở đó trong phiên bản PS mới để bạn có thể hack với nó ở đó.

10
user2278

Nếu bạn muốn luôn luôn chạy PowerShell với quyền riêng tư của quản trị viên, bạn có thể nhấp chuột phải vào phím tắt PowerShell, sau đó nhấp vào nút "Nâng cao ..." trên tab "Phím tắt", sau đó chọn "Chạy với tư cách Quản trị viên ".

5
Ryan Fisher

Cách dễ dàng ...

Đây là cách thiết lập lệnh dễ dàng để nhận đặc quyền quản trị viên bất cứ lúc nào, từ bất kỳ phiên PowerShell nào!

Bước 1: Mở Hồ sơ PowerShell của bạn. (Cho phép notepad tạo tệp nếu thiếu.)

notepad "$profile"

Bước 2: Dán đoạn mã sau vào bất cứ đâu trong tập tin đó. (Chọn dựa trên phiên bản PowerShell bạn muốn chạy - và lưu ý rằng cấu hình là dành riêng cho phiên bản, do đó bạn có thể thực hiện việc này cho từng phiên bản PowerShell nếu bạn chạy song song).

# PowerShell 5
function GoAdmin { Start-Process PowerShell –Verb RunAs }

# PowerShell Core
function GoAdmin { Start-Process pwsh –Verb RunAs }

Bước 3: Khởi động lại PowerShell. Lệnh này hiện có sẵn vĩnh viễn.

Bước 4: Bất cứ khi nào bạn muốn đi quản trị viên, chỉ cần nhập GoAdmin (và đừng lo lắng về việc nhập đúng trường hợp; các hàm PS thực sự không phân biệt chữ hoa chữ thường). Tất nhiên bạn có thể đặt tên cho hàm này một cái gì đó khác như Elevate hoặc bất cứ điều gì, nhưng tôi không muốn có bất kỳ rủi ro xung đột nào nên tôi đặt tên cho nó là cụm từ hai từ mà không có dấu gạch ngang, để đảm bảo nó sẽ không bao giờ xung đột với Các tính năng riêng của PowerShell.

Lưu ý rằng cửa sổ quản trị viên mở trong Shell riêng. Bạn có thể đóng Shell ban đầu hoặc giữ cho nó mở. Nếu công việc quản trị viên của bạn làm một việc gì đó "lớn" như thêm/sửa đổi các biến môi trường, thì người dùng Shell của bạn (không phải quản trị viên) có thể chỉ cần nhập refreshenv để tải lại môi trường của nó và nhận các thay đổi. (Chỉnh sửa: Đã phát hiện ra rằng refreshenv được cung cấp bởi người tuyệt vời Chocolatey người quản lý gói. Loại Update-SessionEnvironment thay vào đó nếu bạn không có Chocolatey.)

Vì vậy, về cơ bản, chỉ cần GoAdmin, thực hiện các thao tác quản trị viên như cài đặt các gói (với https://chatioatey.org/ tất nhiên!), Sau đó đóng cửa sổ quản trị và chạy refreshenv trong Shell người dùng của bạn! Voila.

1
Mitch McMabers