2016-11-03 11 views
8

tôi đã tìm thấy câu trả lời cho cả hai nhiệm vụ riêng biệt, nhưng không phải với nhau:Làm thế nào tôi có thể chạy PowerShell với tư cách quản trị viên VÀ với các đối số từ một tệp lô?

  • Run PowerShell như một admin từ một tập tin batch

  • Run PowerShell với đối số từ một lô file

Nhưng tôi muốn chạy powershell làm quản trị viênvới đối số từ tệp lô.

Vì lý do này, tôi tin rằng đây không phải là bản sao cho đến thời điểm này.

Vấn đề này rất phức tạp vì lý do này:

Tôi đang sử dụng ArgumentList chuyển đổi để trỏ đến đường dẫn file khi chạy một powershell cao. Tôi cũng sử dụng nó để vượt qua các đối số. Riêng biệt, tôi đã có thể sử dụng công tắc này với thành công. Nó không có vẻ như mặc dù tôi có thể sử dụng nó cho cả hai nhiệm vụ mặc dù.

Đây là cách tôi đang sử dụng hiện PowerShell:

Là một quản trị:

powershell -Command "& {Start-Process powershell -ArgumentList '-File "filePath.ps1' -Verb RunAs}" 

Với lập luận:

powershell -ExecutionPolicy unrestricted Import-Module "filePath.ps1" -ArgumentList "arg1","arg2" 

Những gì tôi đã cố gắng:

Tôi đã thử chỉ thêm đối số của mình vào số ArgumentList nơi tệp được chuyển vào nhưng chúng không được nhận dạng.

Tôi cũng đã thử thêm -Verb RunAs vào dòng đối số làm việc, nhưng powershell nghĩ rằng tôi đã cố chuyển qua một đối số khác có tên là Verb và không chạy được quyền quản trị và quyền hạn.

Có thể thực hiện cả hai quyền năng đang chạy dưới dạng quản trị viên và với đối số, bằng cách chuyển đổi cách tôi chuyển đối số hoặc cách tôi tăng quyền hạn?

Trả lời

4

có thể giải quyết vấn đề của bạn mà không cần các công cụ của bên thứ ba, nhưng giải pháp hơi phức tạp.

Do đó, hãy cân nhắc tải xuống công cụ hữu ích của Bill Stewart elevate32elevate64 thay thế, như được mô tả trong his answer, giúp đơn giản hóa giải pháp.

Dưới đây là một ví dụ đơn giản để gọi lệnh Get-Date với các đối số trong một phiên PowerShell cao phóng từ cmd.exe (hoặc một tập tin batch):

powershell -command "start-process -verb runas powershell" "'-noexit -command get-date -UFormat %s'" 

Lưu ý cách dòng lệnh để chạy đến cao Phiên PS mà đối số trung gian -command tạo được chuyển thành một đối số đơn đối số được đính kèm trong dấu ngoặc đơn nhúng.

Trích dẫn có thể được khôn lanh, nhưng phương pháp này cũng làm việc với cách gọi *.ps1 file trên nguyên tắc:

  • powershell -command "start-process -verb runas powershell"bất biến phần của dòng lệnh.

  • còn lại "..." chuỗi -enclosed phải chứa một lồng nhau chuỗi đơn với trích dẫn rằng PowerShell nhận (dấu nháy đơn là dễ nhất) chứa tất cả lập luận rằng bạn sẽ vượt qua trực tiếp đến một powershell ... dòng lệnh gọi.

Áp dụng cho ví dụ của bạn:

... "'-File C:\path\to\filePath.ps1 arg1 arg2'" 

Lưu ý: Hãy chắc chắn để sử dụng đường dẫn đầy đủ để tập kịch bản của bạn, bởi vì phiên PS cao không không (nhất thiết) chạy trong cùng thư mục với phiên gọi.

Nếu bạn cần quote các đối số bên trong chuỗi lồng nhau, sử dụng \":

... "'-File \"c:\path with spaces\to\filePath.ps1\" arg1 arg2'" 
+1

Tôi gặp phải vấn đề khác, nhưng tôi nghĩ về phạm vi của câu hỏi này, điều này đã giải quyết được vấn đề. Ngày kế tiếp! Cảm ơn một tấn. –

4

Bạn có thể thực hiện việc này bằng cách lấy một dòng lệnh thực thi ngắn mà tôi đã viết là Elevate32.exe (hoặc Elevate64.exe cho phiên bản 64 bit). Bạn có thể lấy nó ở đây:

http://www.westmesatech.com/misctools.html (ElevationToolkit1.zip)

Ví dụ:

elevate64 -- powershell.exe -file C:\scripts\myscriptfile.ps1 

Mọi thứ sau -- là dòng lệnh bạn muốn nâng cao.

+1

Vì vậy, tôi khá tự tin rằng điều này đã hiệu quả. Lý do duy nhất tôi chấp nhận câu trả lời khác là bởi vì nó không đòi hỏi một cuộc gọi đến một quá trình bên ngoài, và chỉ có vẻ như một giải pháp thanh lịch hơn. Đây là một công cụ tiện lợi và tôi dự định áp dụng nó cho các ứng dụng khác! Cảm ơn một lần nữa. –

0

Nếu bạn tình cờ có NirCmd bởi nổi tiếng NirSoft nào, bạn có một elevate lệnh ngơi thoải mái tại dịch vụ của bạn (và vô số hơn).

nircmd elevate powershell.exe -File script.ps1 arg1 arg2 ... 

NirCmd có sẵn trong cả x86 và x64 hương vị và miễn phí, giống như tất cả các phần mềm từ NirSoft.

Các vấn đề liên quan