2016-07-07 15 views
1

だから私は、最後の2時間のグーグル/研究してきました、と私は涙の時点で実質的によ...自己署名証明書を生成し、それを使ってPowerShellスクリプトに署名するにはどうすればよいですか?

私はWindows 7の 上だから、私は新自己署名証明書を使用することはできません私はmakecertを使用できません。なぜなら、Windows 7用のSDKをインストールすることを許可しないバグのためです。なぜなら、プレリリース版の.NET 4を持っていると思うからです。 .NET 4をインストールしようとすると、新しいバージョンまたはそれ以上のバージョンがあると通知されました。

私はこれを回避するために見つけたレジストリハックを試みましたが、残念なことにそれは動作しませんでした。

私はこの https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6#content

をダウンロードしました。しかし、私は安全に使用するために他の人にそれを与えることができますので、実際に私のスクリプトが署名を取得するために必要なすべての手順を介して取得するために管理するように見えることはできません。

私は証明書を作成することができたと思いますが(私は正しいかどうか分かりませんが)。

私は今、パスワードまたはキーを適用してからエクスポートする必要があると言えますか?私はまだ自分のスクリプトに具体的にどのように署名するのかまだ分かりませんので、他の人はそれを「署名済み」として実行できます。

ありがとうございます。

また、.exeファイルで相対的な.ps1パスを取得する方法を知っている人は、このすべてを行う必要はありません。

スクリプトは.ps1として正常に動作しますが、PowerGUIを使用して.exeにコンパイルすると、これらの行は機能しません。

. .\Import-XLS.ps1 
$OutFile = ".\TEST$(get-date -Format dd-MM).txt" 
$Content = Import-XLS '.\TEST.xlsx' 

私の代わりに 「という用語のようなものを得る」。\インポートXLS.ps1' はQuestSoftware \は、Powergui \のAppData \ローカル\ Tempにするいくつかの参照と一緒に、コマンドレットの名前として認識されていません\ folder。

私はPowerGUIが奇妙なことをしていると推測していますが、.ps1を.exeに変換する方法がわかりません。 主な質問に対する答えに応じて、 .exeの新しい質問は公式に

ありがとうございます。

+0

自己署名入りの証明書でスクリプトに署名しても、その特定の証明書を与えていないマシンでは、スクリプトは「信頼できる」ものではありません。 – bluuf

+0

"Set-ExecutionPolicy RemoteSigned"を使用している場合は正しくなりますか? このスクリプトを使いたかった人の中には、セキュリティを無署名のリモートスクリプトを実行できるようにするという考えが嫌いでした。 – XViper

答えて

1

私はこの問題を2つの組み合わせで解決しました。

Split-Path $MyInvocation.MyCommand.Path 

[System.AppDomain]::CurrentDomain.BaseDirectory} 

私は後者がコンパイル.EXEで働いている間、.ps1という中ではなく、コンパイル.EXEで働いていたかつてのように、両方を使用する必要はなく、中.ps1。

PowerGUIでコンパイルされた.exeには、一貫したパスフォルダ名が付いているので、以下のようになりました。

$ScriptPath = Split-Path $MyInvocation.MyCommand.Path 
if ($ScriptPath -match 'Quest Software') {$ScriptPath = [System.AppDomain]::CurrentDomain.BaseDirectory} 

私も関数を.exeに含めました(ただし、必ずしも必要ではありませんでした)。 私は、これは私が今、スクリプトの作業証明書を取得しようとするのではなく、.exeファイルを使用できることを意味します$OutFile = "$ScriptPath\<Filename>.txt"$Content = Import-XLS "$ScriptPath\<Filename>.xlsx"

を使用。それでもまだ.ps1の間に変更を迅速にテストすることができます。

これは、PowerGUIを使用して将来的に.exeを作成し、相対パスを使用する必要がある他の人にとって役に立ちますと願っています。

ヘルプとアドバイスを提供してくれたおかげです。

+0

これは私にとってはうまくいったが、 '[System.AppDomain]'の代わりに '[AppDomain]'を使わなければならなかった。 –

0

私はPowerGUIを使ってスクリプトから.exeファイルを作成していないので、これは暗闇の中でのショットですが、外部ファイルのドットソーシングを実装していないと推測しています。コードを展開する理由Import-XLS.ps1の関数をスクリプトの本体にコピーするだけではないのですか?

+0

こんにちはマイク。 ええ、私は最後にそれを試みましたが、$ Outfileと$ Contentファイルはまだ動作しません。 私は絶対パスを設定することでこの問題を解決しましたが、それはスクリプトを本当に柔軟にしません。 他にも.exeを作成する方法はありますか? (または私は新しい質問をする必要がありますか?) ありがとう。 – XViper

+0

のバリエーションを使用することができますか? '$ ScriptPath = Split-Path $ MyInvocation.MyCommand.Path' そして、' $ ScriptPath \ $ OutFile = "\ TEST.txt" ' ' $ Content = Import -XLS '"$ ScriptPath \ TEST.xlsx" ' しかし、私はどちらかを動作させるように見えることはできません。 – XViper

+0

私がドットソーシング以外のものに失敗した場合、私はあまりにも深くそれを気にしないでしょう、とにかくすべてがうまくいくでしょう。それを証明書ストアにインポートした後にスクリプトに署名することに戻ります(詳細はこちら)(https://technet.microsoft.com/en-us/library/cc754489(v = ws.11).aspx) Set-AuthenticodeSignatureを実行し、正しいパラメータを証明するだけで簡単です(詳細はこちら)(https://blogs.technet.microsoft.com/heyscriptingguy/2010/06/17/hey-scripting-guy-how-can -i-sign-windows-powershell-scripts-with-enterprise-windows-pki-part-2-of-2 /) –

関連する問題