2

こちらで質問するのは初めてで、ちょっと気になったので。git リポジトリをプルするための Powershell スクリプトがあります。

git.exe --git-dir=C:\ReleaseStaging\QABuild\.git pull --progress "origin"

これをpowershellで実行すると、スクリプトは正常に機能します。

次のステップは、ac# Windows サービスを取得して、この PowerShell スクリプトを実行することでした。コマンドの出力は、「'W:/QABuild' は git リポジトリではないようです。致命的: リモート リポジトリから読み取ることができませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。」

「W」ドライブは、私の git リポジトリにマップされたドライブであり、C:\ReleaseStaging\QABuild は、リポジトリをローカルに複製する場所です。

私の次のテストは、ConsoleApplication で同じ C# コードを実行することで、問題なく動作しました。そのため、W ドライブを表示するには、Windows サービスを別の資格情報で実行する必要があると考えましたが、同じエラーが発生したため、ローカル アカウントで実行しても機能しませんでした。

Windows サービスで使用しているコードは次のとおりです。

        using(RunspaceInvoke invoker = new RunspaceInvoke()) {
            invoker.Invoke("Set-ExecutionPolicy Unrestricted");
        }

        string cmdArg = String.Format(@"C:\ReleaseStaging\PullChanges.ps1");

        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.ApartmentState = System.Threading.ApartmentState.STA;
        runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
        runspace.Open();

        Pipeline pipeline = runspace.CreatePipeline();
        pipeline.Commands.AddScript(cmdArg);

        pipeline.Commands[0].MergeMyResults(
          PipelineResultTypes.Error, PipelineResultTypes.Output);

        Collection<PSObject> results = pipeline.Invoke();
        var error = pipeline.Error.ReadToEnd();
        runspace.Close();

Windows サービスで実行された powershell スクリプトから git リポジトリを取得する方法について何か考えはありますか?

4

1 に答える 1