私たちのアプリケーションをインストールするだけでなく、ファイルをリモートアプリケーションサーバーにコピーしてそこにサービスをインストールするセットアップパッケージを作成しようとしています。私は、カスタムアクションでinstallメソッドをオーバーライドして、ファイルをコピーするためのPowerShellスクリプトを起動させることを考えました。セットアッププロジェクトを使用してリモートサーバーにファイルをコピーする
システムのセキュリティを侵害する可能性の試みを検出した:コードは、PowerShellスクリプトを呼び出すとき残念ながら、私はこのCmdletProviderInvocationExceptionが得ます。あなたを認証したサーバーに連絡できることを確認してください。
PowerShellスクリプトをテストプロジェクトに呼び出すために使用しているコードをコピーできました。これは、Windowsエクスプローラを介してサーバーにログインしているので、私の予想通りです認証する必要があります。私はスクリプトがインストーラによって呼び出されたときにスクリプトが動作しない理由は、インストーラがユーザーを切り替えてアプリケーションをインストールするための管理者権限を取得し、管理者ユーザーが認証されていないことです(私は間違っている可能性があります)。
どのように私はこれを動作させることができるか知っていますか?ここで
は、カスタムアクションコードです:
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
string scriptLoc = "c:\\sampleLocation";
pipeline.Commands.AddScript("&\"" + scriptLoc + "\\script.ps1\"");
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
、ここではスクリプトです:
$RemotePath = "\\SERVER\C$\Shared\Service"
$Source = "C:\sampleLocation\Service"
Get-ChildItem $Source -Recurse | Copy-Item -Destination $RemotePath
どのオペレーティングシステムでセットアップを実行していますか? – JPBlanc
Windows 7および/またはWindows Server 2003で動作する必要があります –
私はそれを理解したと思いますが、それは醜いです。私はバッチファイルを呼び出すカスタムアクションを持っています: runas/netonly/user:DOMAIN \ user "powershell& 'C:\ path \ script.ps1'" これは完全に自動ではない。私はSendKeysを調べるかもしれません(私はダクトテープと紙クリップを使用しているような気がします...) –