PowerShell git push как запланированное задание - PullRequest
0 голосов
/ 19 декабря 2018

У нас есть сервер Win Server 2016, настроенный для сценариев автоматического создания отчетов, позволяющих отправлять отчеты в github при выполнении в виде запланированной задачи.

Я могу запустить этот сценарий без проблем, когда я вошел в систему какпрокси-пользователь.Я запустил sshagent и он работает.Скрипт умирает во 2-й части скрипта (git push) при запуске как запланированное задание.

Я попытался запустить часть git-push отдельно как запланированное задание, и я до сих пор не могу запустить ее (агент ssh все еще работает).Я также могу запускать это в git-bash без проблем.

#git checkout the most recent vCenter list.
cd D:\virtualization-reporting
git checkout vcenters.csv
cd D:\scripts

#list of vCenters to be queried
$vcenters = import-csv D:\virtualization-reporting\vcenters.csv

#connect to vCenters, get templates, export to csv.
foreach ($vc in $vcenters){
    $creds = Get-VICredentialStoreItem -host $vc.vcenter -file D:\scripts\creds.xml -ErrorAction Ignore
    Connect-VIServer -Server $creds.host -User $creds.User -Password $creds.Password
    foreach($dc in Get-Datacenter){
        foreach($cluster in Get-Cluster -Location $dc){
            Get-Template |
            Select Name,
            @{N='vCenter';e={$vc}},
            @{N='Cluster';E={$cluster.Name}},
            @{N='Path';e={$_.extensiondata.config.files.VmPathName}}|
            sort Name,vCenter,Cluster,Path|
            export-csv -append -path D:\virtualization-reporting\Template_Distribution_Report\Template_status-$((Get-Date).ToString('MM-dd-yyyy')).csv -NoTypeInformation
        }
    }

    #disconnects from each vCenter after gathering data and appeneding to csv
    disconnect-viserver * -confirm:$false
}

#change directory to the repo path on the POSH host.
cd D:\virtualization-reporting

#git merge output with GitHub 
$date = (get-date)
git checkout master
git pull
git add -A
git commit -m "Updated Template Distribution Report for $date"
git push

#exit PowerShell Session
Exit-PSSession

Если я не могу запустить это в PowerShell, я был бы рад, если бы у меня была запланированная задача, которая запускалась бы в POSH или gitБаш, который будет делать GIT Push.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Сначала я запустил ssh URL, который я проверил, проверив источник.

В конечном счете, я определил, что скрипт не работает в git-части скрипта.Хотя я пытался запустить агент и добавить ключ к агенту различными способами, он все же умер.Я обнаружил, что следующий метод работает согласованно (даже после перезагрузки).

Я установил загрузку OpenSSH из https://github.com/PowerShell/Win32-OpenSSH/releases,, распаковал в папку и запустил скрипт: install-sshd.ps1, который устанавливает2 службы OpenSSH.

Затем я выполнил следующие действия:

  1. Сгенерирован новый ключ SSH
  2. Добавлен ключ SSH к агенту
  3. Добавленключ к GitHub
  4. Проверка SSH работает - ssh git@github.mycompany.com

Скрипт запускался как запланированная задача без проблем.

Это былЕдинственный способ, которым я мог найти постоянство после перезагрузок.

0 голосов
/ 20 декабря 2018

Я запустил sshagent и он работает.

Это актуально, только если вы используете SSH URL.

Скрипт умирает во 2-й части скрипта (git push) при запуске как запланированная задача,

Возможно, потому что он работает с другой учетной записью (например, системной), и VICredentialStoreItem не получит те же учетные данные, что и при выполнении из командной строки (как правильный пользователь)
И эти учетные данные будут применяться только к удаленному URL-адресу HTTPS.Не SSH (git@...)

...