Git Portable 64 Bash在Windows Server 2016任务计划程序中不工作

Git Portable 64 Bash在Windows Server 2016任务计划程序中不工作,bash,git,taskscheduler,windows-server-2016,Bash,Git,Taskscheduler,Windows Server 2016,我需要帮助来找出为什么在Windows Server 2016任务调度器中的脚本中运行Git存储库命令时没有执行。当我在命令控制台中执行它们时,一切正常 在Windows Server 2016任务计划程序中,我的操作“启动程序”是:C:\Apps\repo.scripts\UpdateMyRepo.bat UpdateMyRepo.bat cmd代码为: UpdateMyRepo.sh bash代码是 除了“git status命令外,所有操作都在Windows 2016任务计划程序中运行。g

我需要帮助来找出为什么在Windows Server 2016任务调度器中的脚本中运行Git存储库命令时没有执行。当我在命令控制台中执行它们时,一切正常

在Windows Server 2016任务计划程序中,我的操作“启动程序”是:
C:\Apps\repo.scripts\UpdateMyRepo.bat

UpdateMyRepo.bat cmd代码为:

UpdateMyRepo.sh bash代码是

除了“git status命令外,所有操作都在Windows 2016任务计划程序中运行。git status写入一个空的status.log文件。实际上,任何其他作用于存储库的命令,如
git add
git commit
git push
,都会产生空白输出

如果我以Repo用户身份登录时手动执行该命令,并双击Windows文件资源管理器中的
C:\Apps\Repo.scripts\UpdateMyRepo.bat
,或在控制台中运行,则所有操作都会正常运行,并且存储库git状态会写入status.log。当从任务调度器手动或触发执行任务时,我会得到“null”结果

请帮助我了解如何在Windows Server 2016任务计划程序中运行git存储库命令。我已经尝试了太多不同的命令、脚本和权限,以列出在这里不起作用的每个命令、脚本和权限

站台详情: Windows Server 2016标准,所有当前更新 Git便携式64位,2.17.1.windows.2 存储库文件存储在操作系统和任务调度器的本地硬盘上,而不是网络共享中


更新:当我在WS2016任务调度器中运行Git repository任务并了解如何记录一些输出时,出现以下错误:

致命:此操作必须在工作树中运行


存储库文件夹不是“裸”存储库。因此,我怀疑WS2016任务调度器正在应用附加的权限约束,这些约束不适用于任务中分配的用户帐户。如果我尝试在管理控制台而不是普通的用户控制台中运行任务,我会遇到同样的错误。

首先,大多数Git命令都会写入,而不是stdout

因此,您需要使用例如
&>
而不是

其次,为了确保所有Git命令都将在正确的工作树/repo中执行,您可以添加


成功了!
&
重定向也向我显示了
推送结果。谢谢@gridtrak很棒!别忘了阅读:你们似乎不接受你们问题的答案。再次感谢!是的,这就是答案。感谢您提醒我,灰色复选标记并不意味着它已禁用B-)
SET HOME=C:\Users\Repo
REM change to MyRepo git working repository
C:
cd \MyRepo
REM execute my script bash script to update my repository
C:\Apps\Git\bin\bash.exe --login -i -c "/c/Apps/repo.scripts/UpdateMyRepo.sh"
#!/c/Apps/Git/bin/bash.exe -x
export HOME=/c/Users/Repo
cd /c/MyRepo
# write a log entry so we know we are in the repository folder
ls -al > /c/Apps/repo.scripts/myrepofolder.log
# write the git --version to a log file so we know git is working
/c/Apps/Git/bin/git.exe --version > /c/Apps/repo.scripts/version.log
# write the git status to a log file so we know git repository commands work
/c/Apps/Git/bin/git.exe status > /c/Apps/repo.scripts/status.log
# write a done log entry and quit the bash shell
echo done > /c/Apps/repo.scripts/done.log
exit
export GIT_WORK_TREE=/c/path/to/my/repo
export GIT_DIR=/c/path/to/my/repo/.git