При первом размещении здесь, пожалуйста, извините за любые проблемы с моим форматированием.
Я загружаю CSV-файлы из SFTP, который зашифрован PGP. Затем я расшифровываю файл с помощью GPG.exe, используя эту функцию:
function Remove-Encryption
{
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[ValidateScript({ Test-Path -Path $_ -PathType Leaf })]
[string]$inputFilePath,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$outputFilePath,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Password,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$GpgPath = 'C:\Program Files (x86)\GnuPG\bin\gpg.exe'
)
process
{
try
{
$decryptFilePath = $outputFilePath
Write-Verbose -Message "Decrypting [$($inputFilePath)] to [$($decryptFilePath)]"
Write-Host "--batch --yes --pinentry-mode loopback --passphrase $Password -o $decryptFilePath -d $($inputFilePath)"
$startProcParams = @{
'FilePath' = $GpgPath
'ArgumentList' = "--batch --yes --pinentry-mode loopback --passphrase $Password -o $decryptFilePath -d $($inputFilePath)"
'Wait' = $true
'NoNewWindow' = $true
}
Write-Host "Decrypting file $($inputFilePath)"
$result = Start-Process @startProcParams
}
catch
{
#Write-Error $_.Exception.Message
}
}
}
Нашел его где-то в Интернете, может быть, здесь, и он работает для моего случая использования, кроме одной проблемы
Когда я запускаю его впервые за день, кажется, что команда зависает. Запустится GPG, сообщив, что файл зашифрован, но затем ничего не делать. Мне нужно Ctrl + C, чтобы выйти из сеанса и запустить его снова, затем он будет успешно выполнен.
Я не смог понять, в чем может быть проблема. Я обнаружил эту проблему на сайте GPG, которая довольно подробно описывает мою проблему, но, похоже, она была решена год назад, и моя версия новее (2.2.10).
Кто-нибудь знает, что я, возможно, делаю неправильно, или есть какая-то работа, чтобы разбудить это?