Mostrando postagens com marcador PowerShell. Mostrar todas as postagens
Mostrando postagens com marcador PowerShell. Mostrar todas as postagens

Powershell - Testando portas abertas de uma lista de Domain Controllers

Salve a todos!

Compartilho com vocês um script em Powershell para testar todas as portas de uma lista de Domain Controllers.

Segue:

server01
Port 53 is open
Port 88 is open
Port 135 is open
Port 139 is open
Port 389 is open
Port 445 is open
Port 464 is open
Port 636 is open
Port 3268 is open
Port 3269 is open
Port 9389 is open

server02
Port 53 is open
Port 88 is open
Port 135 is open
Port 139 is open
Port 389 is open
Port 445 is open
Port 464 is open
Port 636 is open
Port 3268 is open
Port 3269 is open
Port 9389 is open

Até a próxima!

Breno Padovan

Rastreando e-mails no Exchange Online com Powershell

Olá a todos!

Nesse post vou explicar como rastrear e-mails enviados e recebidos no Exchange Online utilizando o Powershell.

Para isso vamos utilizar o cmdlet Get-MessageTrace.

Alguns pontos a serem observados:

  • O Get-MessageTrace irá retornar dados dos últimos 10 dias
  • Se utilizarmos os parâmetros para retornar dados acima de 10 dias, será retornado um erro 
  • Dados acima de 10 dias, devemos utilizar o Start-HistoricalSearch e o Get-HistoricalSearch (assunto para outro post)
  • Se não passarmos nenhum parâmetro, dados das ultimas 48 horas serão retornados

Vamos aos exemplos:

Obtendo todos os e-mails enviados e recebidos em um determinado período:

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022


 



Especificando um Sender:

Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 -SenderAddress breno@uptocloud.com



 

 

Especificando um Sender e um Recipient:

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 -SenderAddress breno@uptocloud.com -RecipientAddress test@abcde.com.br




 

Para filtrar pelo status da entrega, adicione o parâmetro -Status <opções>
Opções: Failed, Pending, Delivered, Expanded, Quarantined, FilteredAsSpam

Filtrando por palavras específicas:

No exemplo abaixo filtramos:

- por um determinado período
- o endereço do sender contém a palavra 'dba'
- o subject contém a palavra 'Alerta'

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 |  Where {$_.SenderAddress -like '*dba*' -and $_.Subject -like '*Alerta*'}




Exportando o resultado

PS C:\> Get-MessageTrace -StartDate 05/01/2022 -EndDate 05/03/2022 |  Where {$_.SenderAddress -like '*dba*' -and $_.Subject -like '*Alerta*'} |  Export-Csv -NoTypeInformation  -Path c:\temp\file.csv

 

Por hoje é tudo.

Breno Padovan


Exchange Online: Script Powershell para exportar os membros de todos os grupos de distribuição

Olá a todos!

Muitas vezes precisamos exportar os membros de todos os grupos de distribuição para alguma tipo de manutenção, consulta, etc...

O script que compartilho com vocês irá ajudar muito no dia a dia.
Ele ira exportar para um arquivo .csv separando em: Distribution Group, DisplayName, Distribution Group Email, Member DisplayName, Member Email, Member Type.

Segue o exemplo de um arquivo gerado:

Arquivo gerado









Segue script:  

Por hoje é isso.

Breno Padovan.

Exchange Online - Habilitando ou desabilitando SMTP AUTH via Powershell


Olá a todos!

Nesse rápido post vou demonstrar como habilitar ou desabilitar o envios de e-mails autenticados no Exchange Online utilizando Powershell.

Vamos usar a sintaxe: 

Set-CASMailbox -Identity <MailboxIdentity> -SmtpClientAuthenticationDisabled <$true | $false | $null>

 

 

Onde:
$null irá utlizar a configuração global
$true desabilitado
$false habilitado

 

Desabilitando

PS C:\> Set-CASMailbox -Identity breno@padovan001.com -SmtpClientAuthenticationDisabled $true

 

Habilitando

PS C:\> Set-CASMailbox -Identity breno@padovan001.com -SmtpClientAuthenticationDisabled $false

 

Verificando

PS C:\> Get-CASMailbox -Identity breno@padovan001.com

Name  ActiveSyncEnabled OWAEnabled PopEnabled ImapEnabled MapiEnabled SmtpClientAuthenticationDisabled
----  ----------------- ---------- ---------- ----------- ----------- --------------------------------
breno True              True       True       True        True        False


Breno Padovan

Windows Server Core - Movendo FSMO Roles usando Powershell

Salve a todos!

Nesse terceiro artigo sobre Windows Server Core, vamos mover as FSMO Roles utilizando o PowerShell.

Recomendo a leitura dos posts anteriores:

1 - Windows Server Core - Criando uma nova floresta do Active Directory

2 - Windows Server Core - Promovendo um servidor a Domain Controller

Para isso, vamos utilizar o cmdlet Move-ADDirectoryServerOperationMasterRole - referência https://docs.microsoft.com/en-us/powershell/module/addsadministration/move-addirectoryserveroperationmasterrole?view=win10-ps

As FSMO roles foram enumeradas conforme abaixo: 

  • PDCEmulator or 0
  • RIDMaster or 1
  • InfrastructureMaster or 2
  • SchemaMaster or 3
  • DomainNamingMaster or 4

Mãos a massa! 

Primeiro iremos verificar qual servidor hospeda as FSMO

PS C:\> Get-ADForest | select SchemaMaster,DomainNamingMaster

SchemaMaster       DomainNamingMaster
------------       ------------------
dc01.padovan.local dc01.padovan.local


PS C:\> Get-ADDomain | select PDCEmulator,RIDMaster,InfrastructureMaster

PDCEmulator RIDMaster InfrastructureMaster
----------- --------- --------------------
dc01.padovan.local dc01.padovan.local dc01.padovan.local


PS C:\>

No exemplo, iremos mover todas as Roles do servidor DC01 para o servidor DC02

PS C:\> Move-ADDirectoryServerOperationMasterRole -Identity "DC02" -OperationMasterRole 0,1,2,3,4

Move Operation Master Role
Do you want to move role 'PDCEmulator' to server 'dc02.padovan.local' ?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): a
PS C:\>

Para realizar o "Seize" utilizamos o parâmetro -Force

PS C:\> Move-ADDirectoryServerOperationMasterRole -Identity "DC02"
-OperationMasterRole 0,1,2,3,4 -Force

 

Confirmando o move


Até a próxima!

Breno Padovan


1 - Windows Server Core - Criando uma nova floresta do Active Directory

2 - Windows Server Core - Promovendo um servidor a Domain Controller

3 - Windows Server Core - Movendo FSMO Roles usando Powershell

Windows Server Core - Promovendo um servidor a Domain Controller

Olá a todos!
Nesse segundo artigo sobre Windows Server Core, vamos promover um novo servidor a Domain Controller em uma floresta existente.


Semelhante ao artigo anterior, vamos adicionar a role Active Directory Domain Services:

PS C:\Users\Administrator> Install-WindowsFeature -Name AD-Domain-Services


Agora vamos promover o servidor a Domain Controller
Para isso vamos usar o cmdlet  "Install-ADDSDomainController" - referência: https://docs.microsoft.com/en-us/powershell/module/addsdeployment/install-addsdomaincontroller?view=win10-ps

PS C:\> Install-ADDSDomainController -InstallDns -Credential (Get-Credential)
 -DomainName "padovan.local"









 

Verificando os Domain Controllers da Floresta

PS C:\> Get-ADDomainController -Filter * | Select HostName

HostName
--------
DC01.padovan.local
DC02.padovan.local


PS C:\>


É isso ai!
No próximo artigo iremos ver como mover as FSMO utilizando powershell.


Breno Padovan

1 - Windows Server Core - Criando uma nova floresta do Active Directory

2 - Windows Server Core - Promovendo um servidor a Domain Controller

3 - Windows Server Core - Movendo FSMO Roles usando Powershell

Windows Server Core - Criando uma nova floresta do Active Directory

Salve Salve a todos!
Esse é o primeiro artigo de uma série sobre Windows Server Core (no-GUI)
Nesse primeiro artigo vamos criar uma nova Floresta do Active Directory no Windows Server Core 2019.

Vamos lá!

Faça logon no servidor e inicie o powershell: "powershell.exe".
Agora vamos adicionar a role Active Directory Domain Services:

PS C:\Users\Administrator> Install-WindowsFeature -Name AD-Domain-Services



Agora vamos utilizar o cmdlet Install-ADDSForest para iniciar a configuração.
Para mais informações, segue a documentação: https://docs.microsoft.com/en-us/powershell/module/addsdeployment/install-addsforest?view=win10-ps

Mais antes precisamos adicionar em uma variável a senha do Admin password safemode:

PS C:\> $Password = Read-Host -Prompt "Enter password" -AsSecureString
Enter password: *******
PS C:\>


Agora vamos tornar esse servidor o primeiro controlador de domínio com o comando abaixo:

Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath C:\Windows\NTDS -DomainMode WinThreshold -DomainName padovan.local -DomainNetbiosName PADOVAN -ForestMode WinThreshold -InstallDns:$true -LogPath C:\Windows\NTDS -NoRebootOnCompletion:$FALSE -SafeModeAdministratorPassword $Password -SysvolPath C:\Windows\SYSVOL -Force:$true

Para ficar mais fácil a visualização, podemos usar da seguinte forma:

$Params = @{
    CreateDnsDelegation = $false
    DatabasePath = 'C:\Windows\NTDS'
    DomainMode = 'WinThreshold'
    DomainName = 'padovan.local'
    DomainNetbiosName = 'PADOVAN'
    ForestMode = 'WinThreshold'
    InstallDns = $true
    LogPath = 'C:\Windows\NTDS'
    NoRebootOnCompletion = $FALSE
    SafeModeAdministratorPassword = $Password
    SysvolPath = 'C:\Windows\SYSVOL'
    Force = $true
}
Install-ADDSForest @Params

Valores válidos para o parametro -DomainMode e -ForestMode:

Windows Server 2003: 2 or Win2003
Windows Server 2008: 3 or Win2008
Windows Server 2008 R2: 4 or Win2008R2
Windows Server 2012: 5 or Win2012
Windows Server 2012 R2: 6 or Win2012R2
Windows Server 2016: 7 or WinThreshold









Por fim, para obtermos as informações sobre o domínio usamos do cmdlet "Get-AdDomain"

PS C:\> Get-ADDomain


AllowedDNSSuffixes                 : {}
ChildDomains                       : {}
ComputersContainer                 : CN=Computers,DC=padovan,DC=local
DeletedObjectsContainer            : CN=Deleted Objects,DC=padovan,DC=local
DistinguishedName                  : DC=padovan,DC=local
DNSRoot                            : padovan.local
DomainControllersContainer         : OU=Domain Controllers,DC=padovan,DC=local
DomainMode                         : Windows2016Domain
DomainSID                          : S-1-5-21-1986742020-2302366902-924023343
ForeignSecurityPrincipalsContainer : CN=ForeignSecurityPrincipals,DC=padovan,DC=local
Forest                             : padovan.local
InfrastructureMaster               : DC01.padovan.local
LastLogonReplicationInterval       :
LinkedGroupPolicyObjects           : {CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=padovan,DC=loc
                                     al}
LostAndFoundContainer              : CN=LostAndFound,DC=padovan,DC=local
ManagedBy                          :
Name                               : padovan
NetBIOSName                        : PADOVAN
ObjectClass                        : domainDNS
ObjectGUID                         : e1702b4a-2312-40aa-8481-1bb037a5bbc2
ParentDomain                       :
PDCEmulator                        : DC01.padovan.local
PublicKeyRequiredPasswordRolling   : True
QuotasContainer                    : CN=NTDS Quotas,DC=padovan,DC=local
ReadOnlyReplicaDirectoryServers    : {}
ReplicaDirectoryServers            : {DC01.padovan.local}
RIDMaster                          : DC01.padovan.local
SubordinateReferences              : {DC=ForestDnsZones,DC=padovan,DC=local, DC=DomainDnsZones,DC=padovan,DC=local,
                                     CN=Configuration,DC=padovan,DC=local}
SystemsContainer                   : CN=System,DC=padovan,DC=local
UsersContainer                     : CN=Users,DC=padovan,DC=local



PS C:\>


No próximo artigo iremos adicionar um novo domain controller ao domínio existente.

Abraços a todos!

Breno Padovan

1 - Windows Server Core - Criando uma nova floresta do Active Directory

2 - Windows Server Core - Promovendo um servidor a Domain Controller

3 - Windows Server Core - Movendo FSMO Roles usando Powershell

Alterando os limites de tamanho de e-mails no Exchange Online utilizando PowerShell

Olá a todos!
Hoje vamos falar sobre como alterar os limites de tamanho de e-mails no Exchange Online utilizando PowerShell.
Atualmente o limite máximo de uma mensagem de e-mail é de 150 MB, o que é um valor considerável.

Por default, as mailbox criadas possuem o MailBoxPlan definido em:
MaxSendSize     : 35 MB
MaxReceiveSize : 36 MB



Visualizando os limites de todas as mailbox criadas

PS C:\> Get-Mailbox | fl name, maxsendsize, maxreceivesize

Name           : Aline
MaxSendSize    : 35 MB (36,700,160 bytes)
MaxReceiveSize : 36 MB (37,748,736 bytes)

Name           : AntonioSilva
MaxSendSize    : 35 MB (36,700,160 bytes)
MaxReceiveSize : 36 MB (37,748,736 bytes)

Name           : Bruna
MaxSendSize    : 35 MB (36,700,160 bytes)
MaxReceiveSize : 36 MB (37,748,736 bytes)

Name           : isabel
MaxSendSize    : 35 MB (36,700,160 bytes)
MaxReceiveSize : 36 MB (37,748,736 bytes)

Name           : joao
MaxSendSize    : 35 MB (36,700,160 bytes)
MaxReceiveSize : 36 MB (37,748,736 bytes)

PS C:\> 


Alterando os limites para todas as mailbox criadas

PS C:\> Get-Mailbox | Set-Mailbox -MaxSendSize 100MB -MaxReceiveSize 100MB
PS C:\>

Visualizando as alterações

PS C:\> Get-Mailbox | fl name, maxsendsize, maxreceivesize


Name           : Aline
MaxSendSize    : 100 MB (104,857,600 bytes)
MaxReceiveSize : 100 MB (104,857,600 bytes)

Name           : AntonioSilva
MaxSendSize    : 100 MB (104,857,600 bytes)
MaxReceiveSize : 100 MB (104,857,600 bytes)

Name           : Bruna
MaxSendSize    : 100 MB (104,857,600 bytes)
MaxReceiveSize : 100 MB (104,857,600 bytes)

Name           : isabel
MaxSendSize    : 100 MB (104,857,600 bytes)
MaxReceiveSize : 100 MB (104,857,600 bytes)

Name           : joao
MaxSendSize    : 100 MB (104,857,600 bytes)
MaxReceiveSize : 100 MB (104,857,600 bytes)

PS C:\>

Alterando o limite de uma maibox específica

PS C:\> Set-Mailbox -Identity jordao@brenopadovan.onmicrosoft.com -MaxSendSize 80MB 
-MaxReceiveSize 80MB

PS C:\> Get-Mailbox -Identity jordao@brenopadovan.onmicrosoft.com | fl name,  maxsendsize, 
maxreceivesize


Name           : jordao
MaxSendSize    : 80 MB (83,886,080 bytes)
MaxReceiveSize : 80 MB (83,886,080 bytes)



PS C:\>

Modificando o MailboxPlan para as novas contas criadas

PS C:\> Get-MailboxPlan | Set-MailboxPlan -MaxSendSize 55MB -MaxReceiveSize 65MB
PS C:\>


É isso ai pessoal, fico por aqui.
Grande abraço,

Breno Padovan

Exchange Online - Adicionando permissões em calendários via Powershell

Salve Salve a todos!
Depois de um longo período volto a escrever no Blog!
Nes
se post irei demonstrar como atribuir permissões a calendários utilizando o Powershell.
Podemos adicionar permissões a um usuário específico ou a um grupo de segurança.
Por padrão os usuários não podem ver itens de calendário de outros usuários, a única permissão fornecida por padrão é a de exibir informações de disponibilidade.

Sem mais delongas, mãos a massa!!!!

O primeiro passo é saber o nome do calendário que iremos atribuir permissão.
Para isso usamos o comando:

PS C:\> Get-mailbox -identity maria@xyz.com.br | Get-MailboxFolderStatistics 
-FolderScope calendar | sort-object Name |ft Identity,Name

Identity                        Name
--------                        ----
maria\Birthdays              Birthdays
maria\Calendar               Calendar
maria\United States holidays United States holidays

PS C:\> 

No próximo passo iremos atribuir a permissão
Abaixo temos uma lista das permissões que podemos atribuir:

Owner — read, create, modify and delete all items and folders. Also this role allows manage items permissions;
PublishingEditor — read, create, modify and delete items/subfolders;
Editor — read, create, modify and delete items;
PublishingAuthor — read, create all items/subfolders. You can modify and delete only items you create;
Author — create and read items; edit and delete own items NonEditingAuthor – full read access and create items. You can delete only your own items;
Reviewer — read only;
Contributor — create items and folders;
AvailabilityOnly — read free/busy information from calendar;
LimitedDetails;
None — no permissions to access folder and files.

Em nosso exemplo, iremos atribuir a permissão "Editor" ao usuário Antonio ao calendário "Calendar"

PS C:\> Add-MailboxFolderPermission -Identity maria@xyz.com.br:\calendar 
-user antonio@xyz.com.br -AccessRights Editor

FolderName           User                 AccessRights                                                               SharingPermissionFlags
----------           ----                 ------------                                                               ----------------------
Calendar             Antonio Jose da Sil {Editor}


PS C:\>

Listando as permissões de um calendário

PS C:\> Get-MailboxFolderPermission maria@xyz.com.br:\calendar | select user, accessrights

User                   AccessRights
----                   ------------
Default                {AvailabilityOnly}
Anonymous              {None}
Antonio Jose da Silva  {Editor}


PS C:\>

Para remover uma permissão usamos o seguinte comando

Remove-MailboxFolderPermission -Identity maria@xyz.com.br:\calendar –user antonio@xyz.com.br


É isso ai pessoal.
Abraços a todos!

Breno Padovan

Office 365 - Recuperando dados de auditoria usando PowerShell

Olá a todos!
No dia a dia dos administradores, auditoria e conformidade são uma das principais prioridades.
Nesse post vou falar como recuperar dados de auditoria do Office 365 utilizando o PowerShell, mais especificamente do cmdlet Search-UnifiedAuditLog.

O Search-UnifiedAuditLog nos fornece logs de auditoria de eventos do Exchange Online, SharePoint Online, OneDrive for Business, Azure Active Directory, Microsoft Teams, Power BI, Sway e outros  serviços do Office 365.
Podemos pesquisar todos os eventos em um intervalo de datas ou aplicar filtros, com por exemplo, o usuário que executou uma ação ou um log de um determinado serviço.


Vamos a alguns exemplos:

Esse exemplo retornará os eventos de no período de 01/10/2018 a 30/10/2018. Como não informamos um horário, a hora padrão 12:00 AM (meia noite) será aplicada.
Search-UnifiedAuditLog -StartDate 10/01/2018 -EndDate 10/30/2018


Nesse exemplo pesquisamos os logs por data e horário entre 8:00 AM e 6:00 PM referente ao PowerBI.
Search-UnifiedAuditLog -StartDate "10/01/2018 8:00 AM" -EndDate "10/30/2018 6:00 PM" 
-RecordType PowerBI


O exemplo abaixo formata a o resultado por colunas, realizando os seguintes filtros:
Período: -StartDate 09/01/2018 -EndDate 10/30/2018
Serviço: PowerBI
Quantidade de registros: 50
Search-UnifiedAuditLog -StartDate 09/01/2018 -EndDate 10/30/2018 -RecordType PowerBI 
-ResultSize 50 | select recordType, CreationDate, UserIds, Operations

PS C:\>Search-UnifiedAuditLog -StartDate 09/01/2018 -EndDate 10/30/2018
-RecordType PowerBI -ResultSize 50 | select recordType, CreationDate, UserIds, Operations

RecordType   CreationDate        UserIds                     Operations
----------   ------------        -------                     ----------
PowerBIAudit 29/10/2018 23:13:24 antonio@empresa.com.br   ViewReport
PowerBIAudit 29/10/2018 23:13:24 antonio@empresa.com.br   ViewReport
PowerBIAudit 29/10/2018 21:08:22 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 21:07:18 manoel@empresa.com.br    EditDataset
PowerBIAudit 29/10/2018 21:07:11 manoel@empresa.com.br    Import
PowerBIAudit 29/10/2018 20:36:32 asilva@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 20:35:57 asilva@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 20:35:47 asilva@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 20:32:06 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 20:32:02 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 20:30:43 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 20:30:31 manoel@empresa.com.br    EditDataset
PowerBIAudit 29/10/2018 20:30:24 manoel@empresa.com.br    Import
PowerBIAudit 29/10/2018 20:00:46 asilva@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 19:59:11 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 19:59:06 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 19:58:37 manoel@empresa.com.br    EditDataset
PowerBIAudit 29/10/2018 19:58:19 manoel@empresa.com.br    Import
PowerBIAudit 29/10/2018 19:06:10 frnc@empresa.com.br      ViewReport
PowerBIAudit 29/10/2018 19:04:59 fluc@empresa.com.br      ViewReport
PowerBIAudit 29/10/2018 18:39:22 asilva@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:39:11 asilva@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:32:01 donda@empresa.com.br     ViewReport
PowerBIAudit 29/10/2018 18:31:58 botelho@empresa.com.br   ViewReport
PowerBIAudit 29/10/2018 18:17:16 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:10:58 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:10:57 botelho@empresa.com.br   EditDataset
PowerBIAudit 29/10/2018 18:10:50 botelho@empresa.com.br   Import
PowerBIAudit 29/10/2018 18:06:00 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:05:30 botelho@empresa.com.br   EditDataset
PowerBIAudit 29/10/2018 18:05:23 botelho@empresa.com.br   Import
PowerBIAudit 29/10/2018 18:03:52 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:03:49 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:03:28 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:02:32 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:02:22 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:02:21 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:01:31 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:01:23 manoel@empresa.com.br    DeleteReport
PowerBIAudit 29/10/2018 18:00:58 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 18:00:24 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 17:59:53 botelho@empresa.com.br   ViewReport
PowerBIAudit 29/10/2018 17:57:44 botelho@empresa.com.br   ViewReport
PowerBIAudit 29/10/2018 17:56:38 botelho@empresa.com.br   EditDataset
PowerBIAudit 29/10/2018 17:56:31 botelho@empresa.com.br   Import
PowerBIAudit 29/10/2018 17:53:39 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 17:53:19 fluc@empresa.com.br      UpdateFolder
PowerBIAudit 29/10/2018 17:49:47 manoel@empresa.com.br    ViewReport
PowerBIAudit 29/10/2018 17:49:01 fluc@empresa.com.br      ViewDashboard
PowerBIAudit 29/10/2018 17:49:00 fluc@empresa.com.br      ViewDashboard

PS C:\>

Se quisermos exportar o resultado para um arquivo, basta adicionar | Export-Csv -Path c:\temp\result.csv

Search-UnifiedAuditLog -StartDate 09/01/2018 -EndDate 10/30/2018 -RecordType PowerBI 
-ResultSize 50 | select recordType, CreationDate, UserIds, Operations 
| Export-Csv -Path c:\temp\result.csv



Abaixo algumas informações sobre os principais parâmetros:


-RecordType

Filtra as entradas de logs por tipo.
Os valores válidos são:
  • AzureActiveDirectory
  • AzureActiveDirectoryAccountLogon
  • AzureActiveDirectoryStsLogon
  • ComplianceDLPExchange
  • ComplianceDLPSharePoint
  • CRM
  • DataCenterSecurityCmdlet
  • Discovery
  • ExchangeAdmin
  • ExchangeAggregatedOperation
  • ExchangeItem
  • ExchangeItemGroup
  • MicrosoftTeams
  • MicrosoftTeamsAddOns
  • MicrosoftTeamsSettingsOperation
  • OneDrive
  • PowerBIAudit
  • SecurityComplianceCenterEOPCmdlet
  • SharePoint
  • SharePointFileOperation
  • SharePointSharingOperation
  • SkypeForBusinessCmdlets
  • SkypeForBusinessPSTNUsage
  • SkypeForBusinessUsersBlocked
  • Sway
  • ThreatIntelligence
  • Yammer


-ResultSize

Especifica o número máximo de relutados.
O valor padrão é 100 e o máximo é 5.000.


Para mais detalhes clique no link abaixo.
https://docs.microsoft.com/en-us/powershell/module/exchange/policy-and-compliance-audit/search-unifiedauditlog?view=exchange-ps

Por hoje é só meus amigos.
Grande abraço,

Breno Padovan





Office 365 - Obtendo informações sobre as configurações do Click to Run no registro do sistema

Salve Salve a todos!
Depois de um bom tempo sem escrever, aqui estou novamente! Firme e forte!

Nesse post vou demonstrar como obter informações da instalação do Office através das informações de registro do sistema feitos pelo Click to Run.

Mais afinal de contas, o que é esse tal de Click to Run?
A grosso modo, o Click to Run é uma alternativa ao instalador MSI, utilizado para instalar ou atualizar o Office.
O Click to Run utiliza tecnologia de streaming e permite por exemplo que usuários comecem a utilizar o Office antes mesmo que ele esteja completamente instalado ou a utilizar os aplicativos enquanto uma atualização é feita.
Quando instalamos o Office através do Click to Run, as informações são gravadas na seguinte chave de registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration

Veja abaixo como obter as informações:

PS C:\> Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration


ClientVersionToReport             : 16.0.10827.20150
ClientFolder                      : C:\Program Files\Common Files\Microsoft Shared\ClickToRun
WatcherInterval                   : 3600000
PipelineServerName                : ClickToRun_Pipeline16
VersionToReport                   : 16.0.10827.20150
ScenarioCulture                   :
InstallID                         : DC208D48-7ED2-4552-BBD6-59E488F698F8
Platform                          : x86
InstallationPath                  : C:\Program Files (x86)\Microsoft Office
ClientCulture                     : en-us
CDNBaseUrl                        : http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60
O365ProPlusRetail.MediaType       : CDN
UpdatesEnabled                    : True
Activate                          : True
ProductReleaseIds                 : O365ProPlusRetail,ProjectProRetail,VisioProRetail
O365ProPlusRetail.OSPPReady       : 1
StreamingFinished                 : True
RSODReset                         : False
VisioProRetail.MediaType          : CDN
VisioProRetail.OSPPReady          : 1
UpdateChannel                     : http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60
UpdateChannelChanged              : False
O365ProPlusRetail.EmailAddress    : breno@uptocloud.com
BackgroundTransportMethodDefault  : cachedhttp
BackgroundTransportMethodFailures : 0
ProjectProRetail.MediaType        : CDN
ProjectProRetail.OSPPReady        : 1
ProjectProRetail.EmailAddress     : breno@uptocloud.com
VisioProRetail.EmailAddress       : breno@uptocloud.com
O365ProPlusRetail.TenantId        : 4,e5d48eb7-b070-4194-bfcc-36c71d96301a
AudienceId                        : 492350f6-3a01-4f97-b9c0-c7c6ddf67d60
VisioProRetail.TenantId           : 4,e5d48eb7-b070-4194-bfcc-36c71d96301a
AudienceData                      : Production::CC
PackageLockerPath                 : C:\ProgramData\Microsoft\Office
OneDriveClientAddon               : INSTALLED
O365ProPlusRetail.OneNoteInUse    : True
PSPath                            : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Cl
ickToRun\Configuration
PSParentPath                      : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Cl
ickToRun
PSChildName                       : Configuration
PSDrive                           : HKLM
PSProvider                        : Microsoft.PowerShell.Core\Registry

PS C:\>

Um grande abraço,

Breno Padovan

Powershell - Listando todas as VMs e detalhes dos seus VHDs em um Cluster Hyper-V

Salve Salve a todos!
Já passou por um situação onde precisou listar o tamanho que os VHDs de suas VMs estão ocupando em um Cluster?
Nesse rápido post irei demonstrar como listarmos todas as VMs e detalhes dos seus respectivos VHDs em um cluster Hyper-V.
No comando abaixo iremos apresentar o path dos VHDs, o nó do cluster onde está alocado, o tipo do VHD e o seu tamanho.


 Segue exemplo:



Podemos também executar o mesmo comando somente em uma linha, veja o exemplo:

PS C:\> Get-VM -ComputerName (Get-ClusterNode) | ForEach-Object {Get-VHD -ComputerName $_.ComputerName -VMId $_.VMId} |
Select path,computername,vhdtype,@{label='Size(GB)';expression={$_.filesize/1gb -as [int]}}

Path                          ComputerName    VhdType   Size(GB)
----                          ------------    -------   --------
C:\ClusterStorage\VMDATA01... SRVHPV01        Fixed          127
C:\ClusterStorage\VMDATA03... SRVHPV01        Dynamic         15
C:\ClusterStorage\VMDATA03... SRVHPV01        Dynamic        458
C:\ClusterStorage\VMDATA03... SRVHPV01        Dynamic         22
C:\ClusterStorage\VMDATA03... SRVHPV01        Dynamic          4
C:\ClusterStorage\vmdata02... SRVHPV01        Dynamic         15
C:\ClusterStorage\vmdata02... SRVHPV01        Dynamic          6
C:\ClusterStorage\vmdata03... SRVHPV01        Dynamic         73
C:\ClusterStorage\vmdata03... SRVHPV01        Dynamic         18
C:\ClusterStorage\vmdata03... SRVHPV01        Dynamic         24
C:\ClusterStorage\VMDATA03... SRVHPV01        Dynamic        463
C:\ClusterStorage\VMDATA03... SRVHPV01        Dynamic        226
C:\ClusterStorage\VMDATA04... SRVHPV01        Dynamic         40
C:\ClusterStorage\VMDATA02... SRVHPV02        Dynamic         16
C:\ClusterStorage\VMDATA02... SRVHPV02        Dynamic        141
C:\ClusterStorage\VMDATA02... SRVHPV02        Dynamic         15
C:\ClusterStorage\VMDATA02... SRVHPV02        Dynamic        110
C:\ClusterStorage\VMDATA03... SRVHPV02        Dynamic        229
C:\ClusterStorage\VMDATA03... SRVHPV02        Dynamic        341
C:\ClusterStorage\VMDATA03... SRVHPV02        Dynamic        299
C:\ClusterStorage\VMDATA02... SRVHPV03        Dynamic         15
C:\ClusterStorage\VMDATA02... SRVHPV03        Dynamic        722
C:\ClusterStorage\VMDATA02... SRVHPV03        Dynamic         15
C:\ClusterStorage\VMDATA02... SRVHPV03        Dynamic        133
C:\ClusterStorage\vmdata03... SRVHPV03        Dynamic        354

PS C:\>

Exportando o resultado

Se preferir podemos exportar para um arquivo CSV ou gerar um HTML.

Exportando para arquivo CSV



Exportando para um arquivo HTML



É isso pessoal, espero que seja útil.
Abraços a todos!

Breno Padovan

Exchange Online - Gerenciando resource mailbox com PowerShell

Exchange Online - Gerenciando resource mailbox com PowerShell
Salve Salve a todos!
Nesse post irei demonstrar como utilizar o PowerShell para gerenciar resource mailbox no Exchange Online.

Mais o que é afinal de contas resource mailbox?
Em resumo é um tipo de caixa de correio usada para o gerenciamento de salas de reuniões ou equipamentos.
Existe dois tipos de Resource Mailbox: caixa de correio de sala e caixa de correio de equipamento.
Há uma pequena diferença entre as duas, mais o objetivo é o mesmo.
Mais detalhes clique aqui


Mãos a massa

Criando uma caixa de correio de Sala e Equipamento


Sintaxe:
New-Mailbox -Name "<Name>" -Room
New-Mailbox -Name "<Name>" -Equipment

PS C:\> New-Mailbox -Name "Sala 01" -Room
PS C:\>

PS C:\> New-Mailbox -Name "Projetor 01" -Equipment
PS C:\>



Ativando a reserva automática


Sintaxe:
Set -CalendarProcessing "<Identity>" -AutomateProcessing AutoAccept

PS C:\> Set-CalendarProcessing "Sala 01" -AutomateProcessing AutoAccept
PS C:\>
PS C:\> Set-CalendarProcessing "Projetor 01" -AutomateProcessing AutoAccept
PS C:\> 

Verificando:

PS C:\> Get-CalendarProcessing -Identity "Sala 01"

Identity                                                     AutomateProcessing
--------                                                     ------------------
Sala 01                                                      AutoAccept                                                 
PS C:\>


Desativando a reserva automática



PS C:\> Set-CalendarProcessing -Identity "Projetor 01" -AutomateProcessing None
PS C:\>

Verificando

PS C:\> Get-CalendarProcessing -identity "Projetor 01"

Identity                                                     AutomateProcessing
--------                                                     ------------------
Projetor 01                                                  None
PS C:\>


Atribuindo a permissão para que um usuário fique responsável por aceitar ou recusar uma reserva


PS C:\>Set-CalendarProcessing -Identity "Sala10" -AutomateProcessing AutoAccept 
-AllRequestInPolicy $true -AllBookInPolicy $false 
-ResourceDelegates "bruna@padovan112233.onmicrosoft.com"
PS C:\>

Fazendo os testes: vamos reservar uma reunião na Sala 10.

Recebemos um e-mail que a reserva está aguardando a aprovação.
Exchange Online - Gerenciando resource mailbox com PowerShell

Já o usuário que ficou responsável recebe o e-mail abaixo com as opções.


Exchange Online - Gerenciando resource mailbox com PowerShell

Confirmação que a reserva foi aceita.
Exchange Online - Gerenciando resource mailbox com PowerShell



Definindo a permissão para que somente alguns usuários possam reservar sala específica

 
Imagine que exista uma sala que somente o departamento de TI possa usa-la. Nesse caso somente alguns usuários poderão fazer a reserva, os demais usuários não terão essa permissão e a tentativa de reserva será recusada automaticamente.

PS C:\>Set-CalendarProcessing -identity "SalaTI" -AllBookInPolicy: $false 
-AllRequestInPolicy: $false -BookInPolicy "suporte@padovan112233.onmicrosoft.com" 
PS C:\>

Quando outro usuário tenta fazer uma reserva a mesma é recusada automaticamente.
Exchange Online - Gerenciando resource mailbox com PowerShell


Atribuindo a permissão de Full Access


Add-MailBoxPermission "Sala 03" -User "Dulce Feitosa" -AccessRights FullAccess

PS C:\> Add-MailBoxPermission "Sala 03" -User "Dulce Feitosa" -AccessRights FullAccess

Identity             User                 AccessRights     IsInherited Deny
--------             ----                 ------------     ----------- ----
Sala 03              LAMP152A002\Dulce... {FullAccess}     False       False


PS C:\>


Permitindo conflito de reserva usando a opção de reserva automática


PS C:\> Set-CalendarProcessing "Sala Terreo"  -AllowConflicts $True
PS C:\>


Listando Room Mailbox


PS C:\> Get-Mailbox -Filter '(RecipientTypeDetails -eq "RoomMailBox")'| Select Name, Alias

Name        Alias
----        -----
Sala 02     Sala02
Sala 03     Sala03
Sala Terreo SalaTerreo
Sala10      Sala10
SalaTI      SalaTI

PS C:\>


Listando Equipament Mailbox


PS C:\> Get-Mailbox -Filter '(RecipientTypeDetails -eq "EquipmentMailBox")'| Select Name, Alias

Name        Alias
----        -----
Projetor 01 Projetor01


PS C:\>


Alterando o prazo máximo de reserva


Por padrão o prazo máximo é de 180 dias. No exemplo abaixo alteramos para 365 dias

PS C:\> Get-MailBox "Sala10" | Set-CalendarProcessing -BookingWindowInDays 365
PS C:\>

É isso ai pessoal!
Segue alguns links com mais informações:
https://docs.microsoft.com/en-us/exchange/recipients-in-exchange-online/manage-room-mailboxes
https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/set-calendarprocessing?view=exchange-ps

Grande abraço,
Breno Padovan

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Olá a todos!
Como sabemos, em Cloud Computing pagamos por recursos consumidos, e as vezes temos a demanda de manter um servidor ligado somente durante o horário comercial, por exemplo.
Nesse post irei demonstrar como fazer um agendamento para iniciar e desligar uma VM automaticamente usando o Azure Automation.

O Azure Automation é um serviço de configuração e automação do Azure.

Para mais detalhes, clique aqui: https://docs.microsoft.com/en-us/azure/automation/automation-intro


Mão a massa!


O primeiro passo é criar uma conta do Azure Automation.
Pesquise por "Automation" e depois clique em "Automation Accounts" e depois "Create Automation Accounts"
Na opção "Create Azure Run As account" deixe selecione "Yes"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


Após o recurso ser criado, nas opções "Process Automation" selecione "Runbooks" e depois "Add a runbook"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Na próxima tela selecione "Create a new runbook"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Depois de criado, cole o código abaixo e depois clique em "Save"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


Note que temos 3 parâmetros a serem configurados:

  1. Nome da VM
  2. Nome do grupo de recursos no qual a VM pertence
  3. Ação: Startup ou Shutodown


Testando


Podemos testar o nosso script antes de coloca-lo em produção.
Para isso clique no ícone "Test pane"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Na próxima tela entre com os parâmetros que citamos acima e clique em "Start" 

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Abaixo o resultado do teste. Como podemos ver executou sem nenhum erro.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


Publicando o Runbook


O próximo passo é publicar o Runbook.
Para isso clique no botão "Publish" e depois confirme.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Criando o agendamento


Clique em "Schedules"e depois em "Add a Schedule"

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Na tela seguinte clique em "Link a schedule to your runbook" > "Create a new schedule".
Dê um nome para o agendamento e configure o horario de Start da VM.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

O próximo passo é configurar os parâmetros, idêntico ao que fizemos no teste.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Repita o agendamento para o desligamento, alterando o parâmetro "VMACTION" para "Shutdown".

Visualizando a execução dos Jobs


Acessando o recurso Automation Account, podemos visualizar detalhes dos Job.

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation

Azure - Agendando o startup e shutdown de VMs usando o Azure Automation


É isso ai pessoal!

Grande abraço,

Breno Padovan 

Enviando o Service Health do Office 365 por e-mail através de um script Powershell

Olá a todos!
Nesse post irei demonstrar como utilizar um script em PowerShell para envio do Service Health do Office 365 por e-mail.
Para isso, iremos precisar do módulo O365ServiceCommunications, utilizado para recuperar dados da API do Office 365 Service Comunications.


Mãos a massa


O primeiro passo é instalar o módulo O365ServiceCommunications.
Fazemos isso através do comando:

PS C:\> Install-Module -Name O365ServiceCommunications
PS C:\>

Após instalado já podemos fazer alguns testes.
Lembrando que o usuário precisa ser administrador global para executar os comandos abaixo.
Conecte ao Tenant.

PS C:\Import-Module MSOnline 
PS C:\>$O365Cred = Get-Credential 
PS C:\>$O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection 
PS C:\>Import-PSSession $O365Session -AllowClobber 
PS C:\>Connect-MsolService –Credential $O365Cred
PS C:\>

No exemplo abaixo utilizamos o a função Get-SCServiceInfo, que nos retorna informações sobre os serviços disponíveis no Tenant.

PS C:\> $session = New-SCSession -Credential $Credential
PS C:\> Get-SCServiceInfo -ScSession $Session

ServiceName                             FeatureNames
-----------                             ------------
Exchange Online                         {Sign-in, E-Mail and calendar access, E-Mail timely delivery, Management and...
Office Subscription                     {Licensing and Renewal, Network Availability, Office Professional Plus Downl...
Identity Service                        {Sign-In, Administration}
Office 365 Portal                       {Portal, Administration, Purchase and Billing}
Skype for Business                      {Audio and Video, Federation, Management and Provisioning, Sign-In...}
SharePoint Online                       {Provisioning, SharePoint Features, Tenant Admin, Search and Delve...}
Dynamics 365                            {Sign In, Sign up and administration, Organization access, Organization perf...
Azure Information Protection            {Azure RMS Available}
Yammer Enterprise                       {Yammer Components}
Mobile Device Management for Office 365 {Mobile Device Management}
Social Engagement                       {Sign in, Sign up and Administration, Solution Access, Solution Performance...}
Planner                                 {Planner}
Sway                                    {Sway}
Power BI                                {PowerBI.com}
Microsoft Intune                        {Microsoft Intune}
OneDrive for Business                   {OneDrive for Business}
Microsoft Teams                         {Teams Components}
Microsoft StaffHub                      {Service and web access issues, Web client issues, Android client issues, iO...

PS C:\>

No próximo exemplo iremos exibir os eventos do Office 365 ocorridos no Tenant.
Os tipos de eventos são: Incident, Maintenance, and Message.

PS C:\> Get-SCEvent -SCSession $Session -EventTypes Incident -PastDays 7
20/02/2018 23:30:00 22/02/2018 18:22:00 IT129640 Incident  Microsoft Intune   Service restored
21/02/2018 23:00:00 22/02/2018 17:50:00 MO129664 Incident  Office 365 Portal  Service restored
22/02/2018 01:00:00 27/02/2018 00:46:00 LY129669 Incident  Skype for Business Service restored
16/02/2018 16:00:00                     PB129675 Incident  Power BI           Investigating
22/02/2018 08:00:00 23/02/2018 04:33:02 YA129706 Incident  Yammer Enterprise  Service restored
22/02/2018 20:00:00 26/02/2018 21:16:43 EX129742 Incident  Exchange Online    Service restored
23/02/2018 18:01:00 23/02/2018 21:05:00 TM129753 Incident  Microsoft Teams    Service restored
23/02/2018 23:06:47                     SP129758 Incident  SharePoint Online  Service degradation
24/02/2018 05:02:00 25/02/2018 04:00:00 PB129790 Incident  Power BI           Service restored
26/02/2018 18:14:00 27/02/2018 08:49:00 IT131023 Incident  Microsoft Intune   Service restored
23/02/2018 03:00:00 26/02/2018 19:26:17 LY131025 Incident  Skype for Business Service restored
27/02/2018 03:09:00 27/02/2018 03:40:00 TM131058 Incident  Microsoft Teams    Service restored
27/02/2018 13:10:00 27/02/2018 13:36:00 SP131064 Incident  SharePoint Online  Service restored
27/02/2018 10:00:00 27/02/2018 14:55:00 PB131067 Incident  Power BI           False positive
26/02/2018 21:30:00                     IT131084 Incident  Microsoft Intune   Investigating
27/02/2018 15:00:00                     TM131085 Incident  Microsoft Teams    Service degradation
27/02/2018 18:00:00 27/02/2018 21:05:00 YA131086 Incident  Yammer Enterprise  Service restored
27/02/2018 19:55:00 27/02/2018 20:20:00 YA131097 Incident  Yammer Enterprise  Service restored
27/02/2018 20:59:40                     IT131100 Incident  Microsoft Intune   Service degradation
PS C:\>

 

Enviando por e-mail

 

Abaixo temos um script em PowerShell onde podemos por exemplo criar uma tarefa agendada que execute diariamente e envie os incidentes ocorridos nos últimos 7 dias.

O primeiro passo é gerar um arquivo com as credenciais, que será utilizado no script para realizar a conexão.

PS C:\>Get-Credential | Export-CliXml -Path c:\scripts\cred.xml 

Abaixo o Script.
Note que no script temos a descrição do Evento.



Salve em um arquivo .ps1 e crie uma tarefa agendada.

Mais informações, acesse a documentação do O365ServiceCommunications no site do PowerShell Gallery: https://www.powershellgallery.com/packages/O365ServiceCommunications/1.4


Fico por aqui.

Grande abraço,

Breno Padovan.