Através de APIs o Google permite que você realize a integração com todos os Serviços disponíveis, sendo assim você pode desenvolver seus scripts um Python, PowerShell, Shell Script, etc. e realizar a integração através do um Token.
Neste artigo eu mostro todos os passos para exportar uma lista de usuários do Active Directory para o Google Sheets.
Acesse o link : console.cloud.google.com e clique no menu :
Preencha todos os campos com seus dados para criar o Projeto, em seguida clique em CREATE.
Assim que o projeto for criado clique em + ENABLE APIS AND SERVICES.
Pesquise por Google Sheets API.
Clique em ENABLE para habilitar a API.
API habilitada!
Clique no menu Credentials.
Clique em + CREATE CREDENTIALS e Service Account
Preencha todos os campos para criar a Conta de Serviço, em seguida clique em CREATE.
Atribua as Permissões no projeto.
Clique em CONTINUE.
Clique em DONE.
Copie o E-mail gerado, para utilizar no script.
Clique em APIs & Services > Service Accounts
Clique sobre o E-mail, para visualizar as Propriedades.
Detalhes da Conta.
Clique em KEYS
Selecione o tipo P12 e clique em CREATE.
Defina uma Senha, em seguida clique em CLOSE.
Status Active.
Copie o certificado active-directory-01-2883f0047bc5.p12 para o servidor do Active Directory ou para o computador que você utiliza para extrair os dados.
Execute o comando abaixo para instalar os módulos de integração com o Google :
WindowsPS C:\Users\Administrator> Install-Module UMN-Google [ A ] Yes to All
Após a instalação crie o arquivo API.ps1, com o seguinte conteúdo :
Import-Module UMN-Google # Set security protocol to TLS 1.2 to avoid TLS errors [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # Google API Authozation $scope = "https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file" $certPath = "C:\Users\Administrator\Desktop\active-directory-01-2883f0047bc5.p12" $iss = '[email protected]' $certPswd = 'notasecret' $accessToken = Get-GOAuthTokenService -scope $scope -certPath $certPath -certPswd $certPswd -iss $iss $accessToken
Execute o script API.ps1 para verificar se a conexão está sendo estabelecida, deve aparecer o Token como na imagem abaixo :
Crie e Execute o arquivo Sheet.ps1 com o seguinte conteúdo para validar se a Planilha está sendo criada com sucesso!.
# Create new spreadsheet $Title = 'Active Directory' $SpreadsheetID = (New-GSheetSpreadSheet -accessToken $accessToken -title $Title).spreadsheetId $SpreadsheetID # Create new sheet $Sheet = 'Users' Add-GSheetSheet -accessToken $accessToken -sheetName $Sheet -spreadSheetID $SpreadsheetID
Observe que foi gerado um ID.
Tente acessar a Planilha informando o ID.
Se você receber a mensagem que Precisa de Acesso, significa que o Google Drive API não esta habilitado!.
O mesmo erro vai ocorrer se tentar executar via script.
Observe que adicionei as linhas a seguir no script API.ps1 atribuindo o acesso para o e-mail [email protected].
# Create Sheet $SpreadsheetID = '1srVMs4ua7-GjwxxHO38-ccaGqiB-7DXYmeM-BJZuq_Y' Set-GFilePermissions -accessToken $accessToken -fileID $SpreadsheetID -role writer -type user -emailAddress '[email protected]'
Para ativar o Google Drive API acesse o menu :
Clique em ENABLE para habilitar a API.
API Habilitada com sucesso!
Execute o script API.ps1 novamente e observe que a permissão foi atribuída com sucesso!
Acesse a Planilha e observe que a aba Users foi criada e o nome da planilha foi definido como Active Directory.
Adicionei ao script API.ps1 o processo de extração da lista de Usuários do Active Directory, basta executar.
Import-Module UMN-Google # Set security protocol to TLS 1.2 to avoid TLS errors [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # Google API Authozation $scope = "https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file" $certPath = "C:\Users\Administrator\Desktop\active-directory-01-2883f0047bc5.p12" $iss = '[email protected]' $certPswd = 'notasecret' $accessToken = Get-GOAuthTokenService -scope $scope -certPath $certPath -certPswd $certPswd -iss $iss # $accessToken # Create Sheet $SpreadsheetID = '1srVMs4ua7-GjwxxHO38-ccaGqiB-7DXYmeM-BJZuq_Y' #Set-GFilePermissions -accessToken $accessToken -fileID $SpreadsheetID -role writer -type user -emailAddress '[email protected]' #-- All Users $directorypath = (Get-Item -Path ".\").FullName $csv = "ad-users.csv" #-- Import Module Import-Module ActiveDirectory #-- Filter $users = @(Get-ADUser -filter * -Properties SamAccountName, Name, Mail) $result = @($users | Select-Object SamAccountName, Name, Mail) #-- Order by (A-Z) $a = 'SamAccountName' $order = ($a | Sort-Object) $result = $result | Sort $order #-- Export to CSV $result | Sort Company | Export-Csv $csv -NoTypeInformation -Encoding Utf8 # Import CSV $import = New-Object System.Collections.ArrayList($null) # Build sheet header as it isn't included automatically $import.Add( @("SamAccountName", "Name", "Mail")) # Build ArrayList $inputCsv = Import-Csv $csv $inputCsv | ForEach-Object { $import.Add(@($_.SamAccountName, $_.Name, $_.Mail)) } #-- Remove Sheet1 Remove-GSheetSheet -accessToken $accessToken -sheetName Sheet1 -spreadSheetID $SpreadsheetID #-- Import data Set-GSheetData -accessToken $accessToken -rangeA1 "A1:C$($import.Count)" -sheetName "Users" -spreadSheetID $SpreadsheetID -values $import -Debug -Verbose
Resultado final, contendo a lista de Usuários do Active Directory.