こちらで質問するのは初めてで、ちょっと気になったので。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 リポジトリを取得する方法について何か考えはありますか?