2009-11-23 51 views
5

Tôi đã cài đặt PS 1.0 trên máy tính từ xa (RPC001). Tôi đã từng Windows Sysinternals tool PSExec.exe để thực hiện quá trình sau trên điều khiển từ xa:Chạy tập lệnh PowerShell trên PC từ xa

PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2 

tôi có thể thấy quá trình PowerShell.exe chạy trên PC từ xa sau đó, nhưng nó thực sự không làm gì cả, chỉ cần treo ở đó. Tôi đã cố gắng để đặt một mã đơn giản của "Write-Output/Host" một chuỗi trong kịch bản. Tôi chạy cùng một kịch bản trên điều khiển từ xa bằng RTS, nó hoạt động ở đó.

Không chắc chắn nếu tôi bỏ lỡ bất kỳ điều gì khác để chạy tập lệnh bằng cách sử dụng PSExec hoặc đó là giới hạn PSExec.exe. Tôi muốn bắt đầu một kịch bản PS trên điều khiển từ xa để làm một cái gì đó tại địa phương (nén một số tập tin tại địa phương và loại bỏ các tập tin cũ) từ hộp của tôi.

Tôi đã hỏi một câu hỏi tương tự trong Stackoverflow: Run remote process by powershell. Don đề nghị tôi sử dụng PSExec. Nghe có vẻ như một cách khác để giải quyết vấn đề. Tuy nhiên, tôi không thể làm cho nó hoạt động với PowerShell. Bất kỳ cách nào để có được PS làm việc trên máy tính từ xa?

Nhân tiện, tôi không thể sử dụng PS 2.0 vì mạng của tôi không cho phép tôi cài đặt Windows XP SP3, bắt buộc đối với PS 2.0.

Trả lời

6

Sau khi điều tra thêm về công cụ PSExec, tôi nghĩ tôi đã nhận được câu trả lời. Tôi cần thêm tùy chọn -i để yêu cầu PSExec khởi chạy quy trình từ xa ở chế độ tương tác:

PSExec \\RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2 

Nếu không có -i, powershell.exe đang chạy trên điều khiển từ xa ở chế độ chờ. Điểm thú vị là nếu tôi chạy một dơi đơn giản (không có PS trong dơi), nó hoạt động tốt. Có lẽ đây là một cái gì đó đặc biệt cho trường hợp PS? Chào mừng nhận xét và giải thích.

+0

Làm cách nào để đạt được điều này bằng cách sử dụng quá trình khởi động của PSExec " wusa.exe "-ArgumentList" $ W2K12/quiet "-Wait' – Dotnet

2

Bạn có thể thử cách sau không?

psexec \\server cmd /c "echo . | powershell script.ps1" 
+0

Tôi nghĩ rằng bạn đang thiếu đường dẫn tổng C: \ script \ StartPS.ps1 – toxicate20

5

Câu trả lời được chấp nhận không làm việc cho tôi, nhưng sau đã làm:

>PsExec.exe \\<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd 
    /c "powershell -noninteractive -command gci c:\" 

Ví dụ từ here

+0

Cùng một vấn đề ... chấp nhận chạy và trả về mã lỗi 0, nhưng không làm gì cả, trong khi giải pháp của bạn làm việc – SteveC

+1

Tôi có "powershell -noninteractive -file C: \ temp \ scripts.ps1" hoạt động cho tôi (câu trả lời được chấp nhận là không) – kafka

+0

@kafka script.ps1 của bạn ở đâu? Tôi đang cố gắng để có được một tập lệnh chạy từ xa nhưng không có kết quả. – null

0

câu trả lời chấp nhận không làm việc cho tôi, nhưng điều này không. Đảm bảo tập lệnh trong vị trí (c: \ temp_ bên dưới trên mỗi máy chủ từ xa. Servers.txt chứa danh sách các địa chỉ IP (mỗi dòng một)

psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1" 
Các vấn đề liên quan