1

それで、私は過去2時間研究/グーグルをしてきましたが、実際には涙が出ています...

私は Windows 7 を使用しているため、New-SelfSignedCertificate を使用できません。 .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'

代わりに、「「.\Import-XLS.ps1」という用語は、Appdata\Local\Temp\QuestSoftware\PowerGUI\ フォルダーへの参照とともに、コマンドレットの名前として認識されません。

したがって、PowerGUI が何かおかしなことをしていると思いますが、.ps1 を .exe に変換する他の方法がわかりません。主な質問への回答によっては、.exe に関する新しい質問を正式に提出する場合があります。

みんなありがとう。

4

2 に答える 2

1

そのため、2つのことを組み合わせてこの問題を解決することになりました。

Split-Path $MyInvocation.MyCommand.Path

[System.AppDomain]::CurrentDomain.BaseDirectory}

前者は .ps1 では動作するがコンパイル済みの .exe では動作せず、後者はコンパイル済みの .exe では動作するが .ps1 では動作しないため、両方を使用する必要がありました。

PowerGUI でコンパイルされた .exe のパス フォルダー名は一貫しているため、最終的には次のようになりました。

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

関数も .exe に含めました (ただし、必須ではありませんでした)。私はそれから使用$OutFile = "$ScriptPath\<Filename>.txt" し、$Content = Import-XLS "$ScriptPath\<Filename>.xlsx"

これは、スクリプトの有効な証明書を取得しようとする代わりに、.exe を使用できるようになったことを意味します。また、.ps1 のままで変更をすばやくテストすることもできます。

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

ヘルプとアドバイスを提供してくれた人々に感謝します。

于 2016-07-08T04:43:58.143 に答える
0

したがって、PowerGUI を使用してスクリプトから .exe ファイルを作成したことはありません。コードの Import-XLS.ps1 からスクリプトの本体に関数をコピーするだけではどうですか?

于 2016-07-07T13:42:54.050 に答える