Diskpart /s


Olá amigos do mundo dos scripts, powershell, .vbs, .bat e todos aqueles que investem horas elaborando um bom e velho scripiteco.

Essa semana elaboramos algo bacana com o Diskpart. Para aqueles que acompanham o Blog devem ter lido algo sobre disco em reserved, certo? Para ficarmos isento de um incidente como aquele, ou algo parecido, vamos inserir o disco D após a VM ter sido inicializada. Neste cenário removemos o disco D do template e inserimos novamente após subir o SO garantindo que cada vm terá o seu disco com o seu único ID e único serial.

Quais as necessidades levantadas? Quando subimos uma máquina virtual apenas com o Disco C e o leitor de DVD (Volume 0) a unidade de DVD-ROM vem assinado com a letra D. Isso ai pessoal, começou a ficar legal.

Vamos customizar esse processo removendo o volume D e assinando com a letra Z. E a partir desse processo vamos criar a partição no disco.

O processo automatizado requer o seguinte comando:

C:\diskpart.exe /s C:\temp\scripts\dispart.txt – Esse parâmetro irá chamar o arquivo .txt, sacaram galera? Vamos criar um arquivo .txt, com o nome diskpart.txt inser os comandos listados abaixo e guarda-los na pasta C:\Temp\scripts, legal? O próximo passo é abrir o CMD e inserir a linha de comando acima, repetindo na sequência, C:\diskpart.exe /s C:\temp\scripts\dispart.txt

Feito isso o disco estará pronto para uso.

select volume 0

remove letter=D

assign letter=Z

select disk 1

Attributes disk clear readonly

online disk

convert MBR

create partition primary

assign letter=d

format quick fs=ntfs label=”DADOS”

Active

Exit

Espero ter colaborado.

Cluster Microsoft – Disco reserved


Pessoal, recentemente aconteceu algo no mínimo interessante com um servidor de Mailbox (MS-Exchange 2010).

Essa máquina rodava em cima de ESXi 5.0. Vejam que interessante:

Em um ambiente VMware o provisionamento de máquinas acontece a partir de um Template, ou seja, um Windows customizado com unidades C e D, certo? Você instala um Windows, atualiza os patches, instala cliente de BKP e outras ferramentas de acordo como seu ambiente. Legal! E como funciona o lance dos templates? Quando você solicita que seja provisionada uma máquina a partir de um template o vCenter faz um clone daquele template, olha que legal. Pessoal, isso será perfeito se você não for usar essa vmware como par de outra, ou seja, se você não for usar como Cluster Microsoft ou em uma DAG (MS-Exchange).

No processo de criação do cluster em um dos passos se faz necessário efetuar uma validação. Nesse passo de validação essas máquinas criadas a partir do clone com discos D receberam um alerta! Ai mora o perigo pessoal… É apenas um alerta. A validação é concluída com sucesso.

O que pode acontecer? Pode acontecer que esse disco D entre em reserved. Agora, imagine que nessa máquina, como no meu exemplo, está rodando um Exchange que foi feita a instalação no disco D. Ai, meus amigos, quando o telefone da tua mesa tocar e a GI ou o Help-Desk dizer que dezenas de caixas de correio estão fora, ou melhor, o executivo de negócios está sem correio. Nessa hora você pega todas as suas bagunças e vai para o cinema mais próximo, ou, você começa a chorar.

Como podemos validar isso? Pessoal, o objetivo desse post não é trazer os mais rápidos e práticos troubleshooting para tirar o disco de reserved. A ideia aqui é mostrar que isso existe e não deve acontecer.

Microsoft Windows [Version 6.1.7601]

Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Admin>diskpart

Microsoft DiskPart version 6.1.7601

Copyright (C) 1999-2008 Microsoft Corporation.

On computer: VMTESTECLUSTER01

DISKPART> list disk

Disk ### Status         Size     Free     Dyn Gpt

——–  ————-  ——-  ——-  —  —

Disk 0    Online          100 GB 1024 KB

Disk 1    Online          80 GB 1024 KB

Disk 2    Online          600 GB      0 B

Disk 3    Online          600 GB      0 B

Disk 4    Online          600 GB      0 B

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> detail disk

VMware Virtual disk SCSI Disk Device

Disk ID: E87C0E42

Type   : SAS

Status: Online

Path   : 0

Target: 1

LUN ID: 0

Location Path: PCIROOT (0)#PCI(1500)#PCI(0000)#SAS(P00T01L00)

Current Read-only State: No

Read-only  : No

Boot Disk  : No

Pagefile Disk  : No

Hibernation File Disk  : No

Crashdump Disk  : No

Clustered Disk  : No

Volume ### Ltr  Label        Fs     Type        Size     Status     Info

———-  —  ———–  —–  ———-  ——-  ———  ——–

Volume 3     D   New Volume   NTFS   Partition     79 GB  Healthy

DISKPART>

Microsoft Windows [Version 6.1.7601]

Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\ Admin >diskpart

Microsoft DiskPart version 6.1.7601

Copyright (C) 1999-2008 Microsoft Corporation.

On computer: VMTESTECLUSTER02

DISKPART> list disk

Disk ### Status         Size     Free     Dyn  Gpt

——–  ————-  ——-  ——-  —  —

Disk 0    Online          100 GB 1024 KB

Disk 1    Online          80 GB 1024 KB

Disk 2    Online          600 GB      0 B

Disk 3    Online          600 GB      0 B

Disk 4    Online          600 GB      0 B

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> detail disk

VMware Virtual disk SCSI Disk Device

Disk ID: E87C0E42

Type   : SAS

Status: Online

Path   : 0

Target: 1

LUN ID: 0

Location Path : PCIROOT(0)#PCI(1500)#PCI(0000)#SAS(P00T01L00)

Current Read-only State : No

Read-only  : No

Boot Disk  : No

Pagefile Disk  : No

Hibernation File Disk  : No

Crashdump Disk  : No

Clustered Disk  : No

Volume ###  Ltr  Label        Fs     Type        Size     Status     Info

———-  —  ———–  —–  ———-  ——-  ———  ——–

Volume 3     D                NTFS   Partition     79 GB  Healthy

DISKPART>

Os mesmos Disk ID em ambas máquinas. Qual o problema em termos os mesmos ID’s? O recurso de cluster para não promover uma concorrência ao acesso a este disco o coloca em reserva.

clip_image001

As melhores práticas nesse caso é remover o disco D, que está em seu Template, e adiciona-lo novamente, o ID será diferente para cada máquina.

E agora? Já entendi as melhores práticas para não acontecer de um disco entrar em reserved. Tá, me diz ai? Como retiro a reserva do disco em uma situação como esta? Bom, você poderá retirar o modo reserved mas não poderá solicitar uma validação de cluster nessa máquina. Retire a reserva e migre os recursos, no meu exemplo, desinstale o MS-Exchange do disco D. Remove o disco D. Após isso adicione o disco D e instale o MS-Exchange novamente. Depois faça a validação.

Vamos colocar a resolução para retirar o modo reserved. Lembrando que a ideia deste post é orientar para que isso não aconteça.

Abra o Powershell e digite a seguinte linha de comando:

Clear-ClusterDiskReservation -Disk 1 -Node node1 –Force

Espero que compartilhando essa experiência eu posso acrescentar algo.

Kill TS sessions remotely


Problema clássico: Você tenta se conectar remotamente em um servidor via TS e não existe conexões disponíveis…

Uma das formas possíveis para a desconexão dessas sessões, é através de um executável chamado RESET.EXE incluso no Windows 2003 e posteriores (pelo menos até o Windows Server 2012R2 o mesmo ainda existe…rss…lembrando que este EXE também é encontrados nas versões clientes do Windows).

Abaixo segue o exemplo da sintaxe do comando:

Para listar as sessões da maquina remota, execute o seguinte comando:

 

query session /server:NomeDoServidor_ou_IP

 

É necessário a listagem das sessões, para que se tenha acesso ao ID da sessão.

Para “derrubar” a sessão, execute o seguinte comando:

 

reset session IDdasessão /server:NomeDoServidor_ou_IP

 

Espero que seja útil!

10 PowerShell quentes pedalando no seu ambiente.


Como diz um ditado Arrentino “ Como estás”?

Pessoal, a pegada aqui é a seguinte; colocar 10 comandos quentes para você agilizar suas tarefas diárias.

Vamos lá:

#01 – Test-MAPIConnectivity –Identity  EMAILDOUSUARIO@DOMINIO.COM| fl

Este comando sendo positivo garante que serviços do sistema, tais como Managed Folder Assistant e OWA consigam acessar com sucesso a mailbox em questão, o mesmo também traz informações de qual server está localizada a Database e a Mailbox do usuário. Traz o nome da Mailbox e o mais legal, traz a Latencia. Sem falar que o camando também te mostra o status.

#02 – Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState –eq “Failed”}

Esse é maniero pakas mermão. O mais show desse comando é que ele te mostra quais Databases estão com bug’s do milenio no Index. Curtiu? Tem mais mermão.

#03 – Get-MailboxDatabaseCopyStatus * | where {$_.ContentIndexState –eq “Failed”} | Update-MailboxDatabaseCopy –CatalogOnly

Lembra que na dica #02 eu disse que tinha mais? Naquele comando você identificou quais Databases estão com Bug do Milenio no Index, certo? Pois é mermão, agora você corrige. Não é lindo?

#04 – Get-MailboxServer | fl name

           Get-ClientAccessServer | fl name

           Get-TransportServer | fl name

Os comandos acima listam os servidores de suas respectivas funções. Bem prático e rápido.

#05 - Get-MailboxDatabase -Status | ft name, last* –auto

Esse Get é supimpa. O maluco te lista o status do último backup (Full / incremental / cópia) dos databases.

#06Move-ActiveMailboxDatabase NOMEDODATABASE –ActivateOnServer NOMEDOSERVIDOR –Confirm: $false

Comando para mover mailbox.

#07 – Get-Mailbox –Identity CONTADOUSUARIO | Get-MailboxPermission | fl

Acontece as vezes, usuários informam que estão recebendo pop up solicitando senha. Esse comando verifica as permissões de acesso.

#08 – New-moverequest –identify CONTADOUSUARIO –TargetDatabase DATABASENAME –BadItemLimit 50 –AcceptLargeDataLoss

Comandinho supimpa para movimentar usuários. E um ambiente que existem diversas regras de Database esse comanado é muito útil.

#09 – Get-Mailboxserver –identity NOMEDOSERVERMAILBOX | Get-MailboxDatabase | where {$_.name –match “NOMEDATABASE”} | Get-mailbox

Comando maneiro que mostra usuários na database.

#10 – Get-Mailbox –identity EMAILDOUSUARIO@DOMINIO.COM | Select-Object alias | foreach-object {Get-MailboxFolderStatistics –Identity $_.alias | select-object Identity, ItemsInFolder, FolderSize}

Esse comando é para fechar com chave de ouro. Esse Get mostra todas suas pastas criadas na sua mailbox, itens em sua folder e o tamanho de cada.

 

Espero que essas dicas acelerem as tarefas diárias. Em breve traremos os TOP 10 PowerShell para Active Directory.

Criando Keytab para acesso de maquinas UNIX no Active Directory


Para que servidores UNIX possam obter acesso ao AD e para que os mesmos possam ter um objeto ativo no AD bem como a possibilidade de registrarmos SPNs para os mesmos, trabalharmos com autenticação Kerberos de forma transparente,etc.O que torna tudo isso possível é a Keytab que é gerado pela ferramenta KTPASS (ferramenta nativa do Windows).

Segue abaixo exemplo de comando para gerar a Keytab (lembrando que o objeto do computador no AD deve ser préviamente criado):

 

ktpass /princ host/COMPUTER.domain.test@DOMAIN.TEST /out NomeDoArquivo_host.keytab /crypto All /ptype KRB5_NT_PRINCIPAL -desonly /mapuser DOMAIN\COMPUTER$ +rndPass

 

Substituir:

COMPUTER = Nome do Computador

DOMAIN.TEST = Nome do Domínio

DOMAIN = Netbios do Domínio

 

obs:-Necessário alinhar com a equipe de UNIX se os nomes de computador e domínio envolvidos no comando serão imputados com letras minúsculas ou maiúsculas.

Search empty GPO


Uma das tarefas mais importantes na administração do Active Directory é a manutenção de tuning das GPOs.

Abaixo segue um script de PowerShell para que possamos pesquisar GPOs vazias; ou seja, GPOs onde não temos nenhuma configuração efetuada, assim podemos eliminar estes objetos do AD, impedindo arquivos desnecessários na pasta SYSVOL.Basta copiar o código abaixo em um arquivo TXT e renomear a extensão para .PS1

 

import-module grouppolicy
$gpos = get-gpo -All
foreach ($item in $gpos)
{
      if ($item.Computer.DSVersion -eq 0 -and $item.User.DSVersion -eq 0)
     {
             write-host $item.DisplayName is empty
      }
}

 

Espero que seja útil!