Desativa e move contas com mais de 168 dias sem acesso à rede.
import-module activedirectory
$OU_Origem="OU=Usuarios,DC=contoso,DC=local"
$OU_Destino="OU=Desligados/Desativados,DC=contoso,DC=local"
$Log="C:\LogDisable\LogDisableUsers.txt"
$data = ((Get-Date).AddDays(-168)).Date
# Limpando o Conteúdo do Arquivo.
Clear-Content $Log
# Desabilitando as Contas, ignora as unidades organizacionais que contém "SemSistema","Domains Admins" e verifica a data da criação da conta, caso tenha sido criada com menos de 168 dias não desabilita a conta.
Search-ADAccount -AccountInactive -TimeSpan 168.00:00:00 -SearchBase $OU_Origem | Get-ADUser -Properties DistinguishedName,whenCreated,distinguishedName |
Where-Object {($_.DistinguishedName -notlike "*OU=E-mail*" -and $_.DistinguishedName -notlike "*OU=SemSistema*") -and ($_.whenCreated -lt $data) -and $_.DistinguishedName -notlike "*OU=Domain Admins*"} |
ForEach-Object {
Write-host "Conta desativada: " $_.name "Criada em: " $_.whenCreated "Origem do Objeto" $_.DistinguishedName
$_.DistinguishedName | Disable-ADAccount
$_.UserPrincipalName
Write-Output "Conta desativada: " $_.name "Criada em: " $_.whenCreated "Origem do Objeto: " $_.DistinguishedName "Movido para: " $OU_Destino | Out-File -Append $Log
$_.DistinguishedName | Move-ADObject -TargetPath $OU_Destino
}
#Envia e-mail
Send-MailMessage -from data@contoso.local -to infra@contoso.local -smtpserver mail.contoso.local -Subject "Contas Desativas" -Body "Log com as contas que foram desativadas por nao estarem em uso" -Attachments "C:\LogDisable\LogDisableUsers.txt"
segunda-feira, novembro 21, 2016
Script PowerShell desabilitar contas de computadores
Faz algum tempo que não faço uma publicação, vou deixar aqui um script que desabilita contas de computadores.
# Desativa computadores com mais de 186 dias de inatividade.
import-module activedirectory
$DaysInactive = 186
$time = (Get-Date).Adddays(-($DaysInactive))
$OU_Origem="OU=Estacoes,DC=contoso,DC=com"
$OU_Destino="OU=Estacoes Desativadas,DC=contoso,DC=com"
$Log="C:\LogDisable\LogDisableComputers.txt"
# Limpando o Conteúdo do Arquivo.
Clear-Content $Log
# Desabilitando as contas
Get-ADComputer -Filter { LastLogonTimeStamp -lt $time} -Properties LastLogonTimeStamp -SearchBase $OU_Origem |
ForEach-Object {
Write-host "Conta desativada: " $_.name "Origem do Objeto" $_.DistinguishedName
$_.DistinguishedName | Disable-ADAccount
Write-Output "Conta desativada:" $_.name "Origem do Objeto: " $_.DistinguishedName "Movido para: " $OU_Destino | Out-File -Append $Log
Write-Output "------------------------------------------- " | Out-File -Append $Log
$_.DistinguishedName | Move-ADObject -TargetPath $OU_Destino
}
# Envia e-mail.
Send-MailMessage -from data@contoso.com -to infra@contoso.com -smtpserver mail.contoso.com -Subject "Contas Desativas - Computadores" -Body "Log com as contas de computadores que foram desativadas por nao estarem em uso" -Attachments "C:\LogDisable\LogDisableComputers.txt"
# Desativa computadores com mais de 186 dias de inatividade.
import-module activedirectory
$DaysInactive = 186
$time = (Get-Date).Adddays(-($DaysInactive))
$OU_Origem="OU=Estacoes,DC=contoso,DC=com"
$OU_Destino="OU=Estacoes Desativadas,DC=contoso,DC=com"
$Log="C:\LogDisable\LogDisableComputers.txt"
# Limpando o Conteúdo do Arquivo.
Clear-Content $Log
# Desabilitando as contas
Get-ADComputer -Filter { LastLogonTimeStamp -lt $time} -Properties LastLogonTimeStamp -SearchBase $OU_Origem |
ForEach-Object {
Write-host "Conta desativada: " $_.name "Origem do Objeto" $_.DistinguishedName
$_.DistinguishedName | Disable-ADAccount
Write-Output "Conta desativada:" $_.name "Origem do Objeto: " $_.DistinguishedName "Movido para: " $OU_Destino | Out-File -Append $Log
Write-Output "------------------------------------------- " | Out-File -Append $Log
$_.DistinguishedName | Move-ADObject -TargetPath $OU_Destino
}
# Envia e-mail.
Send-MailMessage -from data@contoso.com -to infra@contoso.com -smtpserver mail.contoso.com -Subject "Contas Desativas - Computadores" -Body "Log com as contas de computadores que foram desativadas por nao estarem em uso" -Attachments "C:\LogDisable\LogDisableComputers.txt"
quarta-feira, junho 29, 2016
PowerShell cmdlets Test-netConnection
I used to use telnet client when i needed to check if determined port was open, but in Windows telnet client is not installed by default, in Windows 2012 R2 we have a cmdlets test-netconnection, this cmdlest can verify if determined is open, below an example:
If TcpTestSucceeded is true the port is open, very simple and cool cmdlets, never more telnet client in my servers.
domingo, junho 05, 2016
DNSSEC - PowerShell
A funcionalidade do DNSSEC é muito interessante, e teve uma considerável melhora no Windows 2012 Server, abaixo os passos para a configuração do DNS seguro através do PowerShell:
Criando uma zona chamada contoso.local:
>add-dnsServerPrimaryZone -Name contoso.local -ReplicationScope Forest
Setando a zona como segura:
>Invoke-DnsServerZoneSign -ZoneName contoso.local -SignWithDefault
Verificando os registros tipos DnsKey da zona:
>Get-DnsServerResourceRecord -ZoneName contoso.local -RRType DnsKey
Distribuindo o TrustAnchor para todos os servidores DNS da floresta:
>Set-DnsServerDnsSecZoneSetting -ZoneName contoso.local -DistributeTrustAnchor DnsKey
Adicionando um registro:
>Add-DnsServerResourceRecordA -ZoneName contoso.local -Name webserv -IPv4Address 10.10.8.1
Adicionado uma nova GPO:
>New-GPO -Name NRPT -Domain contoso.local
Criando um link da GPO para o domínio:
>New-GPLink -Name NRPT -Target "DC=contoso,DC=local" -LinkEnabled Yes
Adicionando as configurações NRTP na GPO:
>Add-DnsClientNrptRule -GpoName NRPT -Namespace contoso.local -NameServers IP_DNS_Server -DnsSecEnable
Verificando as configurações:
>Get-DnsClientNrptRule -GpoName NRPT
Para testar se o servidor DNS seguro está funcionando corretamente, deve-se usar o cmdlets Resolve-DnsName:
>Resolve-DnsName -name webserv.contoso.local -DnssecOk
Referência:
https://technet.microsoft.com/en-us/library/dn593694%28v=ws.11%29.aspx
Criando uma zona chamada contoso.local:
>add-dnsServerPrimaryZone -Name contoso.local -ReplicationScope Forest
Setando a zona como segura:
>Invoke-DnsServerZoneSign -ZoneName contoso.local -SignWithDefault
Verificando os registros tipos DnsKey da zona:
>Get-DnsServerResourceRecord -ZoneName contoso.local -RRType DnsKey
Distribuindo o TrustAnchor para todos os servidores DNS da floresta:
>Set-DnsServerDnsSecZoneSetting -ZoneName contoso.local -DistributeTrustAnchor DnsKey
Adicionando um registro:
>Add-DnsServerResourceRecordA -ZoneName contoso.local -Name webserv -IPv4Address 10.10.8.1
Adicionado uma nova GPO:
>New-GPO -Name NRPT -Domain contoso.local
Criando um link da GPO para o domínio:
>New-GPLink -Name NRPT -Target "DC=contoso,DC=local" -LinkEnabled Yes
Adicionando as configurações NRTP na GPO:
>Add-DnsClientNrptRule -GpoName NRPT -Namespace contoso.local -NameServers IP_DNS_Server -DnsSecEnable
Verificando as configurações:
>Get-DnsClientNrptRule -GpoName NRPT
Para testar se o servidor DNS seguro está funcionando corretamente, deve-se usar o cmdlets Resolve-DnsName:
>Resolve-DnsName -name webserv.contoso.local -DnssecOk
Referência:
https://technet.microsoft.com/en-us/library/dn593694%28v=ws.11%29.aspx
terça-feira, maio 31, 2016
Configuração DHCP PowerShell
Pequena referência de comandos em PowerShell para configuração do DHCP no Windows Server
Adicionando um Scope:
>Add-DhcpServerv4Scope -Name "ADM" -StartRange 192.168.14.10 -EndRange 192.168.14.100 -SubnetMask 255.255.255.0 -State InActive
Configurando como ativo
>Set-DhcpServerv4Scope -ScopeId 192.168.14.0 -State Active
Especificando o DNS a nível de server options.
>Set-DhcpServerv4OptionValue -DnsServer 192.168.14.251
Roteador server options.
>Set-DhcpServerv4OptionValue -Router 192.168.14.254
Domain name.
>Set-DhcpServerv4OptionValue -DnsDomain contoso.com
domingo, maio 22, 2016
Migration Tools Windows 2012 R2
Descreverei os passos para a para a migração da Role DHCP, o ambiente é composto por duas máquinas, o servidor que terá as roles transferidas WS08R2 e o servidor de destino WS12R2
Importante: Efetuar a instalação\autorização da Role DHCP no servidor de destino.
O primeiro passo é instalar a ferramenta de migração no servidor WS12R2, com o comando:
>Install-WindowsFeature Migration
Após a instalação executar o Windows Server Migration Tools
Importante: O caminho com a instalação das ferramentas de migração é: %windir%\System32\ServerMigrationTools
Executar o comando Get-SmigServerFeature para verificar as features instaladas no servidor de destino (WS12R2)
>Get-SmigServerFeature
Executar o comando abaixo para criar o arquivo que deverá ser transferido para o servidor WS08R2
PS C:\Windows\system32\ServerMigrationTools>.\SmigDeploy.exe /package /architecture amd64 /os WS08R2 /path D:\MigrationTools
Após transferir os arquivos para o servidor WS08R2 executar o aplicativo SmigDeploy.exe com privilegio de administrador, assim ficará disponível as ferramentas de migração.
Administrative Tools - Windows Server Migration Tools
Para o serviço DHCP Server:
>Stop-Service "DHCP Server"
Abrir o Migration Tools e executar o seguinte comando(Estou armazenado no caminho C:\TEMP):
C:\Windows\system32>Export-SmigServerSetting -featureID DHCP -Path C:\TEMP -verbose
Desautorizando servidor WS08R2
>Netsh DHCP delete server WS08R2 IP
Copiar o conteúdo exportado para o novo servidor.
No servidor de destino W12R2 abrir o powershell e importar a Snapin:
>Add-PSSnapin Microsoft.Windows.Servermanager.Migration
Importar as configurações
>Import-SmigServerSetting -FeatureId DHCP -force -Path D:\TEMP\
Iniciar o serviço:
> start-service "DHCP Server"
Agora as configurações estarão disponíveis no novo servidor.
sábado, maio 21, 2016
PowerShell - Importar Sessão
Estou lendo um livro sobre PowerShell, "Learn Windows PowerShell in a Month of Lunches ", recomendo o livro, vou deixar uma dica que achei bem interessante, normalmente quando precisamos executar um comando em um computador remoto utilizamos o comando enter-pssession, ou dependendo do comando podemos usar o parâmetro -computername de qualquer forma vamos imaginar o seguinte cenário, você deseja obter a lista de usuários do Active Directory, e você está impossibilitado de instalar as ferramentas de administração remota do Active Directory (RSAT-AD-PowerShell) e também não quer usar a comando enter-pssession, é possível importar o módulo do AD-Powershell para a sua máquina, mas a algumas limitações, quando a conexão for fechado será necessário repetir os passos, porque na verdade o comando não é executado na máquina local é executado na máquina remota, vamos lá!
Criando uma nova sessão e armazenando na variavel $teste
> $teste = New-PSSession -ComputerName contos-ad
Importando o módulo remoto
> Invoke-Command -ScriptBlock { Import-Module activedirectory } -Session $teste
Importando os comandos para a máquina local
> Import-PSSession -Session $teste -Module activedirectory -Prefix maykon
ModuleType Name ExportedCommands
---------- ---- ----------------
Script tmp_50c9271b-d963-42c5... {Get-ADFineGrainedPasswordPolicy, Set-ADGroup, Get-ADResourcePropertyVal...
ModuleType Name ExportedCommands
---------- ---- ----------------
Script tmp_50c9271b-d963-42c5... {Get-ADFineGrainedPasswordPolicy, Set-ADGroup, Get-ADResourcePropertyVal...
Agora é possível obter as informações como os usuários com o comando abaixo, é necessário especificar o prefixo, que neste exemplo é maykon
> Get-maykonADuser
sexta-feira, maio 06, 2016
Oracle Expdp
I was trying export a schema in Oracle 11G with a user name "MYUSER", but i get this error:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39145: directory object parameter must be specified and non-null
ORA-39070: Unable to open the log file.
ORA-39145: directory object parameter must be specified and non-null
I had already set up DATA_PUMP_DIR, you can check the location with this command:
SELECT owner, directory_name, directory_path FROM all_directories
This error is because "MYUSER" doesn't have permission, you can allow "MYUSER" use expdp executing this command:
sábado, abril 23, 2016
MCSA: Wnidows Server 2012
Recentemente fiz pela 3 vez a prova 70-412 e finalmente consegui passar, com isso obtive o título de MCSA no Windows Server 2012, a prova foi difícil, foram 42 questões, detalhes do exame:
Vou descrever as ferramentas que usei para passar neste exame:
Virtual Labs:
https://technet.microsoft.com/en-us/virtuallabs/bb467605.aspx
O guia oficial:
http://www.amazon.com/70-412-Configuring-Advanced-Windows-Services/dp/0735673616
IT free Training:
https://www.youtube.com/user/itfreetraining
Cbt Nuggets
https://www.cbtnuggets.com/it-training/microsoft-windows-server-2012-70-412-with-r2-updates
Technet:
http://technet.microsoft.com/
Windows It Pro, excelente site sobre tecnologias Microsoft:
http://windowsitpro.com/
E claro, meu próprio LAB, rodando Hyper-V no Windows 2012 R2.
Marcadores:
70-412,
Certificação Microsoft,
MCSA,
Windows 2012
quinta-feira, abril 07, 2016
Alterar manager ADDS
Um pequeno comando de como alterar o manager de todos os usuários no domínio contoso.local onde o manager for Ted Bundy para Gacy.
>Get-ADUser -Filter {manager -eq "Ted Bundy"} -SearchBase 'DC=contoso,DC=local' | Set-ADUser -Manager "Gacy"
>Get-ADUser -Filter {manager -eq "Ted Bundy"} -SearchBase 'DC=contoso,DC=local' | Set-ADUser -Manager "Gacy"
terça-feira, março 29, 2016
Cluster - PowerShell
Criando um novo cluster
>new-cluster -name tedbundy -node node1, node2, node3 -NoStorage -staticAddress 10.0.0.10,10.0.0.20
Adicionando discos no cluster, onde o número for diferente de 5, ou seja, adiciono todos os discos disponíveis para o cluster menos o 5
>get-ClusterAvailabledisk | Where-Object {$_.Number -ne 5} | add-clusterdisk
Adicionando o disco "Cluster Disk 2" com Shared Volume
>Add-ClusterSharedVolume "Cluster Disk 2"
Configurando o quorun:
O node node1 tem voto como 0
>(get-clusterNode node1).NodeWeight = 0
Alterando a configuração do Quorun para NodeAndDiskMajority
>Set-ClusterQuorum -NodeAndDiskMajority "Cluster Disk 7"
>new-cluster -name tedbundy -node node1, node2, node3 -NoStorage -staticAddress 10.0.0.10,10.0.0.20
Adicionando discos no cluster, onde o número for diferente de 5, ou seja, adiciono todos os discos disponíveis para o cluster menos o 5
>get-ClusterAvailabledisk | Where-Object {$_.Number -ne 5} | add-clusterdisk
Adicionando o disco "Cluster Disk 2" com Shared Volume
>Add-ClusterSharedVolume "Cluster Disk 2"
Configurando o quorun:
O node node1 tem voto como 0
>(get-clusterNode node1).NodeWeight = 0
Alterando a configuração do Quorun para NodeAndDiskMajority
>Set-ClusterQuorum -NodeAndDiskMajority "Cluster Disk 7"
sábado, março 19, 2016
Movendo as FSMO através do PowerShell
Algum tempo atrás escrevi um post demonstrado como mover as FSMO através do famoso ntdsutil.exe, efetuarei o mesmo procedimento, mas agora com o PowerShell, recomendo para qualquer administrador Microsoft aprender PowerShell.
Armazenando o resultado do comando get-addomaincontroller na variável $server
>$server = Get-ADDomainController -Identity "myserver.contoso.com"
Movendo as cinco FSMO para o servidor myserver.contoso.com
Movendo as cinco FSMO para o servidor myserver.contoso.com
>Move-ADDirectoryServerOperationMasterRole -Identity $server -OperationMasterRole SchemaMaster,DomainNamingMaster,PDCEmulator,RIDMaster,InfrastructureMaster
Verificando as FSMO:
>Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator
InfrastructureMaster RIDMaster PDCEmulator
-------------------- --------- -----------
myserver.contoso.com myserver.contoso.com myserver.contoso.com
> Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster
DomainNamingMaster SchemaMaster
------------------ ------------
myserver.contoso.com myserver.contoso.com
quinta-feira, março 17, 2016
User already exists in the current database. (Microsoft SQL Server, Error: 15023)
Já aconteceu diversas vezes esse "problema", quando uma base de dados SQL Server é movida\restaurada para um servidor diferente, o usuário na base de dados vai junto, caso você tenha um login com o mesmo nome e você tentar dar uma permissão qualquer para esse usuário a nível de servidor vai ocorrer o seguinte erro:
User, group, or role 'MYUSER' already exists in the current database. (Microsoft SQL Server, Error: 15023)
Isso acontece porque o login a nível de servidor tem um SID diferente do usuário da database, para resolver essa situação basta executar a procedure sp_change_users_login
Exemplo:
use mydata
sp_change_users_login 'AUTO_FIX', 'MYUSER'
Tem um excelente artigo no blog sqlauthority que dá mais detalhes desse procedimemto:
http://blog.sqlauthority.com/2007/02/15/sql-server-fix-error-15023-user-already-exists-in-current-database/
sexta-feira, fevereiro 26, 2016
Configuração Switch CISCO Catalyst 2960-X
Uma pequena referência:
Definindo o IP da VLAN 1 que por padrão é de gerenciamento
switch#config t
switch(config)#interface vlan 1
switch(config)#ip address 192.168.200.10 255.255.255.0
Habilitando a VLAN 1
switch#conf t
switch(config)#int vlan1
switch(config-if)#no shut
switch(config-if)#end
Salve as configurações!!!!
switch#write
Não sou um admin Cisco, por isso procuro documentar cada procedimento que faço com equipametos CISCO.
Definindo o IP da VLAN 1 que por padrão é de gerenciamento
switch#config t
switch(config)#interface vlan 1
switch(config)#ip address 192.168.200.10 255.255.255.0
Habilitando a VLAN 1
switch#conf t
switch(config)#int vlan1
switch(config-if)#no shut
switch(config-if)#end
Salve as configurações!!!!
switch#write
Não sou um admin Cisco, por isso procuro documentar cada procedimento que faço com equipametos CISCO.
quarta-feira, fevereiro 24, 2016
PowerShell: Criação de Site AD
Abaixo uma pequena referência de comandos em powershell para a criação de sites, subnets, sites links e controlador de domínio somente leitura:
Criação de um site:
>New-ADReplicationSite -Name MYSITE
Criação de uma subnet:
>New-ADReplicationSubnet -Name 192.168.10.0/24 -Site MYSITE
Criando um site link:
>New-ADReplicationSiteLink -Name "MATRIZ - MYSITE" -SitesIncluded MATRIZ,MYSITE -Cost 3
50 -ReplicationFrequencyInMinutes 180
Adicionando uma conta RODC:
>Add-ADDSReadOnlyDomainControllerAccount -DomainControllerAccountName MYRODC -DomainName contoso.local -SiteName MYSITE
Criação de um site:
>New-ADReplicationSite -Name MYSITE
Criação de uma subnet:
>New-ADReplicationSubnet -Name 192.168.10.0/24 -Site MYSITE
Criando um site link:
>New-ADReplicationSiteLink -Name "MATRIZ - MYSITE" -SitesIncluded MATRIZ,MYSITE -Cost 3
50 -ReplicationFrequencyInMinutes 180
Adicionando uma conta RODC:
>Add-ADDSReadOnlyDomainControllerAccount -DomainControllerAccountName MYRODC -DomainName contoso.local -SiteName MYSITE
Marcadores:
70-412,
powershell,
Windows 2012,
Windows Server
terça-feira, fevereiro 23, 2016
Erro: Print Server ID 315
Problema: O servidor de impressão não estava compartilhando as impressoras instaladas no servidor e era gerado o seguinte evento:
"The print spooler failed to share printer MYPRINTER with shared resource name MYPRINTER. Error 8. The printer cannot be used by others on the network.
Event ID: 315
Source: Print Server
Solução:
O serviço Computer Browser estava com o status de parado e estava desabilitado, habilitei o serviço e reiniciei a máquina, e o problema foi resolvido.
"The print spooler failed to share printer MYPRINTER with shared resource name MYPRINTER. Error 8. The printer cannot be used by others on the network.
Event ID: 315
Source: Print Server
Solução:
O serviço Computer Browser estava com o status de parado e estava desabilitado, habilitei o serviço e reiniciei a máquina, e o problema foi resolvido.
sexta-feira, fevereiro 19, 2016
Habilitar área de trabalho remota - PowerShell
É possível habilitar a área de trabalho remota através do registro do Windows, para isso basta alterar a chave de registro fDenyTSConnections, para verificar o valor da chave
Get-ItemProperty "hklm:\system\CurrentControlSet\Control\Terminal Server" | ft -Property fDenyTSConnections
Se o valor for igual a 1 está desabilitado o acesso a área de trabalho remota, para habilitar basta alterar o valor para 0 com o comando:
Set-ItemProperty "hklm:\system\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections 0
quarta-feira, fevereiro 17, 2016
Remove Windows.old folder - Windows Server 2012 R2
This post is about how to clean a Windows.old folder, when you upgrade Windows the installer create a folder Windows.old , but you can remove this folder. First you need to install a Desktop-Experience, by default this is not installed in Windows Server
>Install-WindowsFeature -name Desktop-Experience -IncludeManagementTools
Reboot the system
>Restart-Computer
Open the Server Manager - Tools - Disk Cleanup
Select the Drive C:
Check de option "Previous Windows installation(s)"
Simple and you safe some GB in your server.
>Install-WindowsFeature -name Desktop-Experience -IncludeManagementTools
Reboot the system
>Restart-Computer
Open the Server Manager - Tools - Disk Cleanup
Select the Drive C:
Check de option "Previous Windows installation(s)"
Simple and you safe some GB in your server.
terça-feira, fevereiro 16, 2016
Office 365: Exchange Online
Por padrão quando é criado um grupo de e-mail na organização somente membros da organização podem enviar e-mails para esse grupo, se uma pessoa fora da organização tentar enviar um e-mail para o grupo o mesmo receberá uma mensagem de erro, para resolver isso basta editar o grupo no Exchange Online, e habilitar a opção "Remetentes de dentro e de fora da minha organização":
Caso seu domínio esteja sincronizado com seu AD local (federado), não será possível a alteração, será apresentando a seguinte mensagem:
O Procedimento para habilitar essa opção no AD local e alterar o atributo msExchRequireAuthToSendTo para FALSE (Advanced Features deve estar habilitado)
segunda-feira, fevereiro 15, 2016
Dica Apache redirecionamento
Neste primeiro post do ano vai uma dica simples e útil no Apache, configurar um redirecionamento, quando os usuários conectarem no apache na porta 80 eles serão redirecionados para a porta 443, basta adicionar o seguinte conteúdo no seu VirtualHost:
Testei com o Apache 2.4.
Testei com o Apache 2.4.
Assinar:
Postagens (Atom)