2013-08-05 47 views
8

Trong khi chạy các lệnh remoting như Enable-PsSession, Invoke-command, v.v ... chúng tôi cần cung cấp bằng chứng xác thực với các lệnh đó.Powershell Remoting với chứng chỉ

Tôi không muốn cung cấp thông tin đăng nhập mỗi khi thực hiện lệnh này.

Cũng cho phép nói rằng tôi đã lưu tên người dùng trong biến & bằng cách sử dụng biến trong khi thực hiện lệnh. Tôi cũng muốn làm điều này cho mật khẩu. Tôi có thể làm điều đó không?

Ví dụ:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential mydomain\administrator 

Vì vậy, ở đây tôi đang cung cấp mọi mật khẩu trong khi thực hiện các lệnh.

Làm cách nào để lệnh nhận tên người dùng & mật khẩu tự động hoặc từ biến số & một số cơ chế khác?

Trả lời

13

Bạn có thể làm:

$cred = get-credential #fill you credential in the pop-up window 

và sau đó:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential $cred 

Hãy nhớ rằng mật khẩu trong $cred có thể dễ dàng thu hồi trong văn bản rõ ràng!

2

Powershell sẽ đặt mặc định thành thông tin đăng nhập của người dùng đang chạy phiên quyền hạn, nếu không có thông tin nào được chỉ định rõ ràng.

Vì vậy, nếu bạn chạy Powershell với tư cách người dùng có quyền quản trị trên máy từ xa, bạn không phải nhập bằng chứng khi chạy lệnh.

Điều bạn có thể làm là bạn có thể tạo tác vụ theo lịch với thông tin đăng nhập được lưu trữ cho tài khoản dịch vụ và cho phép người dùng (hoặc chính bạn) truy cập để chạy tác vụ.

http://blogs.technet.com/b/heyscriptingguy/archive/2011/01/12/use-scheduled-tasks-to-run-powershell-commands-on-windows.aspx

Hoặc bạn có thể lưu trữ thông tin trong quản lý chứng chỉ Windows, có nghĩa là họ đang được mật mã bằng sử dụng Windows của bạn.

https://gist.github.com/toburger/2947424

Tuy nhiên với các giải pháp quản lý chứng chỉ, bất kỳ người sử dụng có thể chạy script trong ngữ cảnh của bạn sẽ có thể trích xuất các mật khẩu trong văn bản rõ ràng.

Tuy nhiên, đây không phải là vấn đề, nếu bạn chỉ sử dụng tính năng này cho chính mình hoặc nếu mọi quản trị viên chạy tập lệnh làm như vậy từ ngữ cảnh người dùng của riêng mình.

3

Mã hóa mọi thứ. Tạo một đối tượng gọi thông tin được giải mã là mật khẩu. Sử dụng nó như thế:

read-host -assecurestring | convertfrom-securestring | out-file C:\localdrivespace\username-password-encrypted.txt 
$username = "domain\username" 
$password = cat C:\localdrivespace\username-password-encrypted.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 
Các vấn đề liên quan