3

いくつかのpowershellビルドスクリプトをセットアップしようとしています. スクリプトに署名して で実行するために使用できる自己署名証明書がありますAllSigned。問題は、これが scm (git) に反映されないことです。

スクリプトを複製して実行しようとしたり、スクリプトを変更して元に戻したりしようとすると、ファイルが署名されていないというエラーが表示されます。

File <> cannot be loaded. The file <> is not digitally signed. The script will not execute on the system. ...

スクリプトに再署名すると、署名ブロックが変更され、再度実行できます。

署名を保存する方法はありますか?

4

2 に答える 2

3

今朝、これをもう少し掘り下げます。

実際のファイルに追加された署名ブロックとともに、ファイルの拡張属性として格納された署名情報があります。

予想通り、git は ea を追跡しません。アクセス許可などの属性の場合、標準的なアドバイスは git フックを使用することです。ファイルに再署名せずにデジタル署名の属性を設定する方法を見つけることができませんでした。

これにより、3 つのオプションが残ります。

  • スクリプトを実行する必要があるビルド サーバーとその他のコンピューターを に切り替えますRemoteSigned
  • 属性が削除されるたびに、いくつかのシェルブードゥー、git フック、およびSignToolを使用してファイルに再署名します。壊れやすくハック。
  • PowerShell スクリプトが不要になるように、ビルド/デプロイ プロセスを作り直します。私は初期段階にいるので、これが私の最良の選択肢です。
于 2013-09-20T13:09:36.790 に答える
2

ソース管理に関連する何かがスクリプトを変更しています。たとえば、Subversion を使用している場合、$Idまたは$URL$viaなどのキーワードを展開svn:keywordsすると、リビジョンごとにスクリプトが変更されます。もう 1 つの可能性は、EOL マーカーまたはファイル エンコーディング (UTF-8 と ASCII) が変更されていることです。

于 2013-09-20T00:05:55.427 に答える