2013-05-16 35 views
12

私はOctopusを使用しています。私は展開を制御するためのPowerShellスクリプトの1に問題がある:私は停止しようとPowershell in 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 
    } 
} 

プログラムでは、上記のスクリプトで見たものではありませんが、私がしようとしているものを表します。今私が持っている問題は、1つのサーバーではうまく動作するが、別のサーバーではうまく動作しないということです。それが動作しない場合は、エラーメッセージが表示されます。

Windows PowerShellは非インターアクティブモードです。読み取りおよびプロンプト機能は使用できません。

Powershell 3.0で動作するスクリプトは、Powershell 2.0では動作しません。古いサーバーがWindows Server 2003で動作するため、Powershell 3.0をどこにでもアップグレードすることはできません。PS 2.0でこれを動作させるにはどうすればいいですか? -Force

+0

バージョン2.0のサーバーから 'get-executionpolicy'と' $ confirpreference'の値を投稿できますか? –

+0

get-executionpolicy RemoteSigned $ confirpreference $ confirpreferenceの出力がありませんでした。 – tobre

+0

Ops、私の誤植:$ confirmpreference ... –

答えて

14

ラン:

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

C.B.はコメントで示唆したように:-confirm:$falseも動作するはずです。理由は以下の通りです。-Confirmはスイッチパラメータです。後続のコロンと値を指定してパラメータを指定した場合にのみ、スイッチパラメータに引数を取ることができます。

+0

できるだけ早く試してみます。私たちのユーザーはシステムを頻繁にテストに使用しており、頻繁に導入を行うことはできません。私は今朝Powershell ISEからメモ帳を停止してスクリプトを実行し、うまくいきました。したがって、問題が解決されたかどうかを確認する唯一の方法は、実際の展開を行うことです。 – tobre

+0

修正。 '-Force'で実行 –

+0

これはRead-Hostでは機能しません。提案? – ryanwebjackson