code

비인터랙티브 모드의 파워셸

starcafe 2023. 8. 11. 22:28
반응형

비인터랙티브 모드의 파워셸

배포에는 Octopus를 사용합니다.배포를 제어하는 Powershell 스크립트 중 하나에 문제가 있습니다.

# 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
    }
}

중지하려는 프로그램은 위의 스크립트에 표시되는 프로그램이 아니라 내가 수행하려는 프로그램을 나타냅니다.문제는 한 서버에서는 잘 작동하지만 다른 서버에서는 잘 작동하지 않는다는 것입니다.작동하지 않는 경우 다음과 같은 오류 메시지가 표시됩니다.

프로세스 중지 : Windows PowerShell이 비대화형 모드에 있습니다.읽기 및 프롬프트 기능을 사용할 수 없습니다.

작동하는 스크립트는 Powershell 3.0에서 실행되고 Powershell 2.0에서는 작동하지 않습니다.이전 서버는 윈도우즈 서버 2003에서 실행되기 때문에 아직 모든 곳에서 Powershell 3.0으로 업그레이드할 수 없습니다.PS 2.0에서 작동하려면 어떻게 해야 합니까?

실행 대상-Force:

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

C.B.가 논평에서 제안한 바와 같이:-confirm:$false또한 작동해야 합니다.이에 대한 근거는 다음과 같습니다.-Confirm는 스위치 매개 변수입니다.스위치 매개 변수는 매개 변수를 후행 콜론과 값으로 지정한 경우에만 인수를 사용할 수 있습니다.

방금 아이들이 있는 디렉토리에서 Remove-Item을 사용하려고 했는데 동일한 메시지가 표시되었습니다.Remove-Item : PowerShell is in NonInteractive mode. Read and Prompt functionality is not available.내 경우에는-Recurse키가 도움이 되었습니다.

언급URL : https://stackoverflow.com/questions/16580723/powershell-in-noninteractive-mode

반응형