Encrypt File using PGP/GPG (5 replies)
Roger, you would do this in a Script Task.
Below is a sample script (yes it's long)....
'This function runs a PGP Extraction process. 'Encrypts all the GPG files for upload to Concur Const FILE_PATH = "C:\IMan\OutputData" Const GPG_EXE_PATH = """C:\Program Files (x86)\GnuPG\bin\gpg.exe""" Const ENCRYPT_BATCH_FILE = "exec.bat" Const TXT_EXT = "txt" Set fso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell") sDirectory = FILE_PATH sExtractDirectory = fso.BuildPath(FILE_PATH, EXTRACT_DIRECTORY) sEncryptBatchFile = fso.BuildPath(sDirectory, ENCRYPT_BATCH_FILE) Set GetAllFiles = CreateObject("Scripting.Dictionary") ' start the search Set objFolder = fso.GetFolder(sDirectory) Set objFiles = objFolder.Files For Each objFile In objFiles If fso.GetExtensionName(objFile) = TXT_EXT Then GetAllFiles.Add objFile, objFile End If Next For Each Item In GetAllFiles.Keys If Item <> "" Then sFile = Item If fso.FileExists(sFile) Then Set tso = fso.CreateTextFile(sEncryptBatchFile, True, False) tso.WriteLine "echo off" sBatchCmd = GPG_EXE_PATH & " --encrypt -r [email protected] """ & sFile & """" tso.WriteLine sBatchCmd tso.WriteLine "echo on" tso.Close objShell.Run """" & sEncryptBatchFile & """", 1, True End If End If Next If fso.FileExists(sEncryptBatchFile) Then fso.DeleteFile sEncryptBatchFile, True End If Set tso = Nothing Set fso = Nothing Set colFiles = Nothing 0
The script is a bit tricky....we dynamically generate a batch file which is then executed.
Thanks for this, I never would have thought of this approach, but its still not working for me. If I load the job, and execute the step containing the script nothing happens. No errors, and no encrypted files, even though they are files in the directory that should be processed. If I run the step a second time I get the error "An object with the given name has already been added" and still no encrypted files.
I altered the script so it would not delete the exec.bat file and then exited Iman and came back in so I had a new session. The first time I run the step the exce.bat file gets created, the contents are correct, but I dont think it is executing it, there are no encrypted files. At that point if I open a command window and manually execute the .bat file the files are processed correctly. (If I run the step a second time, I get the same error as above and no exec.bat file is created)
To summarize, the first time the script is used it is creating the .bat file but failing to run it, there are no encrypted files, there are no errors. The second time the script is fired (in the same Iman session) the error message is displayed, no bat file is created, and there are no encrypted files. Overall I am getting the same results that I had with my original script.
I have attached my integration with the script
File attached....
FYI You need to run IMan under a specific Windows user due to the nature of the script.
The Permissions function provides the user with the rights to launch shell processes.
As a step in an integration I am trying to encrypt a file using the command
gpg -r [email protected] --encrypt C:\Iman\OutputData\Sage_Inv_20200011.csv
this command works perfect in a command window but in the integration I get this error
The file is not created, there are no other messages. I have also tried executing the step under my user ID to the same result.