2013-05-16 35 views
12

Tôi sử dụng Octopus để triển khai. Tôi có một vấn đề với một trong những kịch bản Powershell để kiểm soát việc triển khai:Powershell ở chế độ NonInteractive

# stops running processes 
$processes = @("Notepad", 
       "Firefox") 
foreach ($process in $processes) 
{ 
    $prc = Get-Process -Name $process -ErrorAction SilentlyContinue 
    if (-not($prc -eq $null)) 
    { 
     Write-Host "Stopping " $prc.ProcessName 
     Stop-Process -InputObject $prc -ErrorAction SilentlyContinue 
    } 
} 

Các chương trình tôi cố gắng để ngăn chặn không phải là những bạn nhìn thấy trong kịch bản trên, nhưng họ đại diện cho những gì tôi đang cố gắng làm. Bây giờ vấn đề tôi có với nó, là nó hoạt động tốt trên một máy chủ, nhưng không hoạt động trên một máy chủ khác. Vị trí không hoạt động, tôi nhận được thông báo lỗi:

Quy trình dừng: Windows PowerShell đang ở chế độ NonInteractive. Chức năng Đọc và Nhắc không khả dụng.

Tập lệnh hoạt động trên Powershell 3.0, tập lệnh không hoạt động trên Powershell 2.0. Tôi không thể nâng cấp lên Powershell 3.0 ở mọi nơi vì các máy chủ cũ chạy với Windows Server 2003. Làm thế nào tôi có thể làm cho nó hoạt động trên PS 2.0?

+0

Bạn có thể đăng giá trị 'get-executionpolicy' và' $ confirmationpreference' từ máy chủ với phiên bản 2.0 không? –

+0

get-executionpolicy RemoteSigned $ confirmationpreference Không có đầu ra cho $ confirmationpreference. – tobre

+0

Ops, typo của tôi: $ confirmpreference ... –

Trả lời

14

Run với -Force:

Stop-Process -InputObject $prc -ErrorAction SilentlyContinue -Force

Như C.B. gợi ý trong các bình luận: -confirm:$false cũng nên làm việc. Lý do cho điều này là như sau: -Confirm là một tham số chuyển đổi. Tham số chuyển đổi chỉ có thể lấy đối số nếu bạn chỉ định tham số có dấu hai chấm và giá trị.

+0

Tôi sẽ thực hiện việc này ngay khi có thể. Người dùng của chúng tôi thường xuyên sử dụng hệ thống để thử nghiệm và tôi không thể triển khai thường xuyên. Tôi chạy kịch bản sáng nay từ Powershell ISE ngăn Notepad và nó hoạt động tốt. Do đó, cách duy nhất để kiểm tra xem sự cố có được giải quyết hay không là triển khai thực tế. – tobre

+0

Hiệu chỉnh. Chạy với '-Force' –

+0

Điều này không hoạt động với Read-Host. Gợi ý? – ryanwebjackson

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