Как запустить рабочий процесс PowerShell только один раз? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть приведенный ниже сценарий рабочего процесса powershell, который является частью более крупного сценария, который выполняется при каждой перезагрузке системы. Мне нужно, чтобы он запускал и редактировал файлы только один раз. Пожалуйста, дайте мне знать, как этого добиться. Спасибо.

#=============================Edit Oracle DB files==============================
workflow Edit-Dbfiles {
  param (
    [Parameter(Mandatory = $true, Position = 0)]$oracleFilePaths,
    [Parameter(Mandatory = $true, Position = 1)]$newHostname
  )
 
  ForEach ($filePath in $oracleFilePaths) {
    if (!(Test-Path -Path $filePath)) {
      Write-Warning "$filePath does not exist`r`n"
    }
    else {
      Write-Host "Modifying hostname in $filePath"
      $tempFilePath = "$env:HOMEDRIVE\temp\$($filePath | Split-Path -Leaf)"
      $hostPattern = "(?<=\(HOST = )[^)]+"
      (Get-Content -Path $filePath) -replace $hostPattern, $newHostname | Add-Content -Path $tempFilePath
      Remove-Item -Path $filePath
      Move-Item -Path $tempFilePath -Destination $filePath
      Write-Host "Modified $filePath with the new hostname - $newHostname"
    }
  }
}

Edit-Dbfiles -oracleFilePaths $oracleFilePaths -newHostname $newHostname

1 Ответ

0 голосов
/ 17 июня 2020

Я полагаю, что следующие изменения в Edit-Dbfiles logi c могут сработать для вас:

  1. Создан какой-то файл (например, «formed.txt ») в конце выполнения« Edit -Dbfiles "и сохраните его где-нибудь в системе, где он не будет случайно удален, после Write-Host "Modified $filePath with the new hostname - $newHostname"
  2. Добавьте проверку того, что« execute.txt »существует в начале рабочего процесса и не запускает его, если он существует.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...