2009-05-27 43 views
11

Có thể nâng cấp quyền của tập lệnh PowerShell để người dùng không có đặc quyền quản trị viên có thể chạy tập lệnh không? Quản trị viên mạng của chúng tôi đang cố gắng tìm thêm nhiều cách hiệu quả về thời gian để thực hiện các tác vụ nhất định mà ngay bây giờ họ phải sử dụng máy tính từ xa để ... tự động hóa chúng bằng các tập lệnh PS sẽ giúp ích, nhưng người dùng không có quyền quản trị.Kịch bản nâng cao Powershell

+3

Thuộc về Server Fault. – Richard

+0

Xem SF @ http://serverfault.com/questions/12985/elevated-powershell-script – Richard

+2

yea, nếu bạn nhìn vào người dùng đã đăng câu hỏi đó ... bạn sẽ thấy rằng đó là tôi. Tôi đăng nó ở đó vì bạn đã cố gắng để có được câu hỏi của tôi ở đây khởi động ... –

Trả lời

8

Nhiệm vụ là giống như setuid hơn sudo ... và may mắn, setuid thể: bạn chỉ có thể tạo ra một nhiệm vụ theo lịch trình (mà không có một kế hoạch thiết lập), và đặt để nó chạy nâng. Sau đó, cấp quyền cho người dùng của bạn để thực hiện tác vụ đó. Tôi đã phác thảo quá trình in a blog post một lúc trước cùng với tập lệnh PowerShell để giúp tạo các tác vụ và phím tắt để chạy chúng.

Vấn đề (như JaredPar đề xuất) là bạn phải đảm bảo rằng các ứng dụng bạn đã lên lịch chạy hoặc "quản trị viên" được bảo vệ và điều này đặc biệt đúng nếu bạn chạy tập lệnh. Đảm bảo không có ai nhưng quản trị viên có thể chỉnh sửa hoặc thay thế tập lệnh đó hoặc bạn đang cho đi các phím ngôn ngữ cho vương quốc.

+0

Điều này có vẻ như nó có thể làm việc, bạn có biết nếu nó sẽ làm việc với XP không? –

+1

Liên kết chết. Lưu trữ trên Internet * Kích hoạt! * Https://web.archive.org/web/20110821152558/http://huddledmasses.org/vista-setuid-how-to-elevate-without-prompting/ –

1

Có vẻ như bạn đang tìm kiếm một số sudo tương đương trong cửa sổ. Sudo không cố hữu với Windows vì nó là môi trường kiểu Unix nhất. Nhưng có một số công cụ có sẵn tương đương nhau.

Hãy cảnh giác khi sử dụng các loại công cụ mặc dù. Một kịch bản không được bảo vệ + sudo là một nguy cơ bảo mật.

6

nếu bạn đang sử dụng V2, bạn có thể sử dụng sau đó là lên trên the PowerShell Team Blog

Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"' 

này sẽ chạy "Get-Process" as administrator.

Nếu bạn không có V2, bạn có thể tạo đối tượng StartInfo và đặt Động từ thành Runas như thế này.

function Start-Proc { 
    param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments)  

    # Build Startinfo and set options according to parameters 
    $startinfo = new-object System.Diagnostics.ProcessStartInfo 
    $startinfo.FileName = $exe 
    $startinfo.Arguments = $arguments 
    $startinfo.verb = "RunAs" 
    $process = [System.Diagnostics.Process]::Start($startinfo) 

} 

I have a blog post thảo luận thêm một chút về việc sử dụng đối tượng System.Diagnostics.ProcessStartInfo.

+1

Điều đó không giúp ích nếu người dùng không phải là quản trị viên;) – Jaykul

+0

Đủ công bằng. Tôi liếc qua câu hỏi một chút quá nhanh –

1

đầu tiên choco install pscx qua http://chocolatey.org/ (bạn có thể phải khởi động lại môi trường shell của bạn)

sau đó kích hoạt psxc

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser #allows scripts to run from the interwebs, such as pcsx 

Sau đó sử dụng Invoke-Elevated

Invoke-Elevated {Add-PathVariable $args[0] -Target Machine} -ArgumentList $MY_NEW_DIR 
Các vấn đề liên quan