0

私はしばらくの間、Powershell スクリプトに取り組んできました。これは、私個人 (ローカル マシン上) と、ドメイン内外の他のユーザーの両方が使用できるように設計されています。

問題は、私以外の誰かがスクリプトを実行しようとすると、次のエラーが表示されることです。

The file C:\my_script.ps1 cannot be loaded. The execution of scripts is disabled on this system. Please see "Get-Help about_signing" for more details.

他の従業員のワークステーションのポリシーを変更して、スクリプト自体でリモート署名を許可することでこれを処理したと思いましたが、このリンクによると、もう少し堅牢なものが必要になります。

内部マシンと外部マシンの両方でこれを自己完結型で実行できるようにすることを目的としているため、スクリプトを強制的に制限なしに変更することは避けたいと思います。他のオプションはありますか?これを別の方法 (1 人は .NET コンテナーを推奨) のプロジェクトまたは何かでまとめて、よりクリーンに実行し、より自己完結型にすることはできますか?

4

1 に答える 1

2

あなたの問題を理解しているかどうかわかりません。スクリプトを実行したくないマシンで makecert を使用できます。

@echo off
makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr LocalMachine
pause
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer

次に、スクリプトに署名します。

$cert = @(Get-ChildItem cert:CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature <your script path> $cert | Out-Null

「自己完結型」の部分は問題になりません。

于 2013-05-11T12:43:03.723 に答える