Tutorial para a Coordenação de Informática (CINF)
Atenção!
- O uso do sistema, responsabilidades e competências foi normatizado através da Resolução 057/2020 - CONSUNI.
Formatando a lista de eleitores
Após a comissão eleitoral receber a lista de eleitores disponibilizada pelos setores competentes é necessário deixar a lista no formato a ser carregado no Helios.
Para isso foram criados alguns scripts para auxiliar a formatação das informações.
CPF para HELIOS
Gerando lista de votantes a partir do arquivo contendo os CPFsPara gerar o arquivo de importação do Helios a partir do arquivo recebido (ou tratado) com somente o CPF (um por linha) foi criada uma função a ser executada no PowerShell (abaixo):
Function cpf2helios( $CPF_FILE, $HELIOS_FILE ) { # ==================================================================================== If ( !$CPF_FILE ) { $CPF_FILE = ".\arquivo_com_cpfs.txt" } If ( !(Test-Path -Path $CPF_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break } # ------------------------------------------------------------------------------------ If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\arquivo_helios.csv" } # ------------------------------------------------------------------------------------ Write-Host "Parametros configurados:" Write-Host "- Arquivo de entrada (CPF).: $CPF_FILE" Write-Host "- Arquivo de saida (HELIOS): $HELIOS_FILE" # ==================================================================================== Write-Host "Iniciando Processamento:" # ------------------------------------------------------------------------------------ Write-Host "- Excluindo arquivo de saida se já existente." If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE } # ------------------------------------------------------------------------------------ Write-Host "- Processando registros do arquivo entrada." $CONTA_REGISTRO = 0 Get-Content $CPF_FILE | ForEach-Object { If ( Get-ADUser -Identity $_ -Properties SamAccountName,mail,displayName ) { $USUARIO = ( Get-ADUser -Identity $_ -Properties SamAccountName,mail,displayName ) $CPF = $USUARIO.SamAccountName $MAIL = $USUARIO.mail $NOME = $USUARIO.displayName $CONTA_REGISTRO++ Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO" } } # ==================================================================================== Write-Host "Processamento finalizado!" # ==================================================================================== }
Siga os seguintes passos para executar o script:
- Copie a função e cole diretamente no PowerShell, isto vai criar uma função na sessão no shell e você poderá executá-la múltiplas vezes apenas chamando: cpf2helios na linha de comando.
- O arquivo de entrada deve conter somente CPFs (um por linha).
- Execute a função passando os parâmetros conforme abaixo:
cpf2helios
# default: ARQUIVO_DE_ENTRADA = .\arquivo_com_cpfs.txt e ARQUIVO_DE_SAIDA = .\arquivo_helios.csv
ou
cpf2helios -CPF_FILE ARQUIVO_DE_ENTRADA # default: ARQUIVO_DE_SAIDA = .\arquivo_helios.csv
ou
cpf2helios -CPF_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA
SIGA para HELIOS
Gerando lista a partir do arquivo de alunos exportado pelo SIGA (com CPF e separados por curso).Para gerar o arquivo de importação do Helios a partir do arquivo gerado pelo SIGA foi criada uma função a ser executada no PowerShell (abaixo):
Function siga2helios( $SIGA_FILE, $HELIOS_FILE ) { # ==================================================================================== $SIGA_TMP_FILE = ".\arquivo_tmp_siga.csv" # ------------------------------------------------------------------------------------ If ( !$SIGA_FILE ) { $SIGA_FILE = ".\alunos_siga.txt" } If ( !(Test-Path -Path $SIGA_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break } # ------------------------------------------------------------------------------------ If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\alunos_helios.csv" } # ------------------------------------------------------------------------------------ Write-Host "Parametros configurados:" Write-Host "- Arquivo de entrada (SIGA): $SIGA_FILE" Write-Host "- Arquivo de saida (HELIOS): $HELIOS_FILE" # ==================================================================================== Write-Host "Iniciando Processamento:" # ------------------------------------------------------------------------------------ Write-Host "- Excluindo arquivo de saida se já existente." If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE } # ------------------------------------------------------------------------------------ Write-Host "- Convertendo arquivo temporario em ASCII (por causa da acentuação)." Get-Content $SIGA_FILE | Set-Content -Encoding ascii $SIGA_TMP_FILE # ------------------------------------------------------------------------------------ Write-Host "- Processando registros do arquivo entrada." $CONTA_REGISTRO = 0 Import-Csv -Delimiter "|" $SIGA_TMP_FILE | ForEach-Object { $ID = $_.CIC If ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) { $USUARIO = ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) $CPF = $USUARIO.SamAccountName $MAIL = $USUARIO.mail $NOME = $USUARIO.displayName $CONTA_REGISTRO++ Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO" } } # ==================================================================================== Write-Host "- Excluindo arquivos temporarios." If ( Test-Path -Path $SIGA_TMP_FILE ) { rm $SIGA_TMP_FILE } # ------------------------------------------------------------------------------------ Write-Host "Processamento finalizado!" # ==================================================================================== }
Siga os seguintes passos para executar o script:
- Copie a função e cole diretamente no PowerShell, isto vai criar uma função na sessão no shell e você poderá executá-la múltiplas vezes apenas chamando: siga2helios na linha de comando.
- Execute a função passando os parâmetros conforme abaixo (no mínimo contendo o CENTRO de Ensino):
siga2helios -CENTRO SIGLA_DO_CENTRO # default: ARQUIVO_DE ENTRADA = .\alunos_siga.txt e ARQUIVO_DE_SAIDA = .\alunos_helios.csv
ou
siga2helios -CENTRO SIGLA_DO_CENTRO -SIGA_FILE ARQUIVO_DE_ENTRADA # default: ARQUIVO_DE_SAIDA = .\alunos_helios.csv
ou
siga2helios -CENTRO SIGLA_DO_CENTRO -SIGA_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA
Observações:
- Sempre que a função executa, o arquivo gerado é apagado (se já existente) então lembre-se de copiá-lo se quiser mantê-lo.
- O arquivo original possui cabeçalho e o gerado não, então sempre vai existir 01 (uma) linha de diferença entre os dois.
Em algumas situações, a secretaria acadêmica e/ou de pós graduação poderão enviar vários arquivos, um para cada curso, por exemplo. O seguinte script foi criado para gerar um arquivo .csv no formato do Helios para cada arquivos .txt dentro de uma determinada pasta. Necessário se atentar aos detalhes:
- O script siga2helios já deve estar disponível no PowerShell;
- Se atentar a parte $PastaEntrada, colocar o caminho completo ou $PWD caso já esteja na pasta dos arquivos .txt;
- Na chamada da função siga2helios, alterar para o centro de acordo com o seu;
- Basta copiar e colar o script no PowerShell.
# Script para converter todos os arquivos .txt em uma pasta para .csv # Definir a pasta de entrada $PastaEntrada = "C:\Pasta\Com\Arquivos\SIGA" #utilize $PWD, sem aspas, caso esteja na pasta dos arquivos # Obter todos os arquivos .txt na pasta $ArquivosSIGA = Get-ChildItem -Path $PastaEntrada -Filter *.txt # Loop para cada arquivo .txt foreach ($ArquivoSIGA in $ArquivosSIGA) { # Extrair o nome do arquivo sem a extensão $NomeArquivo = $ArquivoSIGA.BaseName # Gerar o nome do arquivo CSV $ArquivoCSV = "$NomeArquivo.csv" # Chamar a função para converter o arquivo, não esqueça de alterar para o seu centro siga2helios -CENTRO CENTRO -SIGA_FILE $ArquivoSIGA.FullName -HELIOS_FILE $ArquivoCSV # Exibir mensagem de sucesso Write-Host "Arquivo $ArquivoCSV gerado com sucesso!" } # Mensagem de finalização Write-Host "Todos os arquivos .txt na pasta foram convertidos para .csv no formato do Helios!"
SIGRH para HELIOS
Gerando lista de votantes a partir do arquivo gerado pelo RHPara gerar o arquivo de importação do Helios a partir do arquivo Excel encaminhado pelo RH foi criada uma função a ser executada no PowerShell (abaixo):
Function excel2csv ($FILE) { # ==================================================================================== $EXCEL_FILE = "$(Get-Location)\$FILE" -replace '\.\\','' $CSV_FILE = $EXCEL_FILE.Split(".")[0] + ".csv" $TMP_FILE = $EXCEL_FILE.Split(".")[0] + "_temp.csv" # ------------------------------------------------------------------------------------ Write-Host " * Abrindo a planilha no Excel." $EXCEL_APP = New-Object -ComObject Excel.Application $WB = $EXCEL_APP.Workbooks.Open($EXCEL_FILE) # ------------------------------------------------------------------------------------ Write-Host " * Salvando a planilha como CSV." ForEach ($WS in $WB.Worksheets) { $WS.SaveAs($TMP_FILE, 6) } # ------------------------------------------------------------------------------------ Write-Host " * Finalizando o processo Excel." $EXCEL_APP.Quit() Stop-Process -ProcessName EXCEL # ------------------------------------------------------------------------------------ Write-Host " * Extraindo o cabeçalho do arquivo (7 primeiras linhas)." Get-Content $TMP_FILE | Select-Object -Skip 7 | Set-Content -Encoding utf8 $CSV_FILE # ------------------------------------------------------------------------------------ Write-Host " * Excluindo arquivos temporarios." If ( Test-Path -Path $TMP_FILE ) { rm $TMP_FILE } # ------------------------------------------------------------------------------------ return $CSV_FILE # ==================================================================================== } Function sigrh2helios( $SIGRH_FILE, $HELIOS_FILE ) { # ==================================================================================== $SIGRH_TMP_FILE = ".\arquivo_tmp_sigrh.csv" # ------------------------------------------------------------------------------------ If ( !$SIGRH_FILE ) { $SIGRH_FILE = ".\servidores_sigrh.xlsx" } If ( !(Test-Path -Path $SIGRH_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break } # ------------------------------------------------------------------------------------ If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\servidores_helios.csv" } # ------------------------------------------------------------------------------------ Write-Host "Parametros configurados:" Write-Host "- Arquivo de entrada (SIGRH): $SIGRH_FILE" Write-Host "- Arquivo de saida (HELIOS).: $HELIOS_FILE" # ==================================================================================== Write-Host "Iniciando Processamento:" # ------------------------------------------------------------------------------------ Write-Host "- Excluindo arquivo de saida se já existente." If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE } # ------------------------------------------------------------------------------------ Write-Host "- Convertendo arquivo Excel para CSV." $SIGRH_TMP_FILE = excel2csv -FILE $SIGRH_FILE # ------------------------------------------------------------------------------------ Write-Host "- Processando registros do arquivo entrada." $CONTA_REGISTRO = 0 Import-Csv $SIGRH_TMP_FILE | ForEach-Object { $ID = $_.CPF -replace '[.-]', '' If ( $ID ) { If ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) { $USUARIO = ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) $CPF = $USUARIO.SamAccountName $MAIL = $USUARIO.mail $NOME = $USUARIO.displayName $CONTA_REGISTRO++ Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO" } } } # ==================================================================================== Write-Host "- Excluindo arquivos temporarios." If ( Test-Path -Path $SIGRH_TMP_FILE ) { rm $SIGRH_TMP_FILE } # ------------------------------------------------------------------------------------ Write-Host "Processamento finalizado!" # ==================================================================================== }
Siga os seguintes passos para executar o script:
- Copie a função e cole diretamente no PowerShell, isto vai criar uma função na sessão no shell e você poderá executá-la múltiplas vezes apenas chamando: sigrh2helios na linha de comando.
- Como o Excel é utilizado para converter o arquivo é necessário tê-lo instalado na mesma máquina que está executando o script.
- Importante: o arquivo fornecido possuía 7 linhas iniciais que são informativas (do relatório) e são extraídas automaticamente na função de conversão do arquivo de Excel para CSV. Caso o arquivo fornecido tenha um cabeçalho diferente será necessário ajustar a função excel2csv.
- Execute a função passando os parâmetros conforme abaixo:
sigrh2helios
# default: ARQUIVO_DE ENTRADA = .\servidores_sigrh.xlsx e ARQUIVO_DE_SAIDA = .\servidores_helios.csv
ou
sigrh2helios -SIGRH_FILE ARQUIVO_DE_ENTRADA # default: ARQUIVO_DE_SAIDA = .\servidores_helios.csv
ou
sigrh2helios -SIGRH_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA