4

Jenkins の「Powershell プラグイン」を動作させられないのはなぜですか?

次のコマンドで「Windowsバッチコマンドを実行」ビルドステップを使用して、Jenkinsでpowershellスクリプトを実行できます。

powershell -ExecutionPolicy ByPass -File script.ps1

しかし、「Windows Powershell」ビルドステップとこのコマンドを使用して、Jenkins の「Powershell プラグイン」で PowerShell スクリプトを実行できません。これは、Windows 実行ポリシーが設定されていないというエラーが実行を許可しないためです。

script.ps1

スクリプトを正常に実行するために Jenkins の「Powershell プラグイン」に与える適切な引数を知っている人はいますか? それ以外の場合は、バッチ スクリプトの回避策を使用します。

4

3 に答える 3

3

正しいことは、マシンに実行ポリシーを設定することです (1 回限りのアクション)。この時点で、毎回それをバイパスする必要はなく、Jenkins プラグインは「そのまま機能する」はずです。できませんか?

合理的な開始設定は RemoteSigned です。これにより、ローカル スクリプトを正常に実行できますが、インターネットからダウンロードされたスクリプトは引き続き許可されません。

管理者特権の PowerShell プロンプトから、次を実行します。

Set-ExecutionPolicy RemoteSigned

参照: http://technet.microsoft.com/library/hh849812.aspx

更新: ポリシーの適用とその動作方法に関するヘルプからの抜粋:

ローカル コンピューター (既定) または現在のユーザーの実行ポリシーを設定すると、変更はレジストリに保存され、再度変更するまで有効になります。

もちろん、マシンがドメイン上にある場合、グループ ポリシーはこれを元に戻すことができます。

于 2013-08-09T00:41:36.737 に答える
3

再起動防止ソリューションの場合、この1行を入力してください

powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Force

Windows 7 では、All Users Startupフォルダーのバッチ ファイルにC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

(または、[スタート] -> [すべてのプログラム] をクリックし、[スタートアップ] を右クリックして [すべてのユーザーを開く] をクリックして、そこにアクセスできます)

これは、システム管理者を関与させることなく、グループ ポリシーの対象となるドメイン マシンで Jenkins に PS スクリプトを実行させる方法です ;-)

于 2013-11-22T13:19:40.590 に答える
2

実験の結果、Jenkins はシステム ユーザーとしてサービスとして実行されているため、powershell スコープがターミナル サービスのログイン セッションで使用されるスコープとは異なることに気付きました。

このスクリプトは私にとっては機能し、再起動や新しいログイン後も設定が持続するようにレジストリ キーを適切に設定しているようです。

# SetExecutionPolicyToRemoteSigned.ps1
# Need to run this after every server reboot.
Write-Output "Setting local Powershell policy to RemoteSigned"
Write-Output ""

Set-ExecutionPolicy -scope CurrentUser Undefined -Force
#Set-ExecutionPolicy -scope Process Undefined -Force
Set-ExecutionPolicy -scope LocalMachine Undefined -Force

Set-ExecutionPolicy -scope CurrentUser RemoteSigned -Force
#Set-ExecutionPolicy -scope Process RemoteSigned -Force
Set-ExecutionPolicy -scope LocalMachine RemoteSigned -Force

Write-Output "Finished."

Get-ExecutionPolicy -list
Start-Sleep -s 10
于 2013-08-09T15:52:54.023 に答える