quinta-feira, 11 de julho de 2013

VBScript para iniciantes


Para muitos administradores, a idéia de escrever um código já faz muitos pensarem "Isso não é o tipo de coisa que fazemos, isso é para os desenvolvedores e programadores". O fato é que o script pode ser tão difícil ou tão fácil como você optar por fazê-lo. Você pode escrever um script longo e complicado para mapear unidades automaticamente, mas você precisa fazê-lo? Não, pois o script pode ser tão simples como duas linhas:

Set oDrives = CreateObject ("WScript.Network")
oDrives.MapNetworkDrive "Z:", \\SVR01\Home

Nós vamos entrar em mais detalhes um pouco mais a frente, o objetivo aqui é demonstrar que script pode automatizar tarefas repetitivas. Quantas vezes você já mapeou unidades no prompt de comando ou escrito em arquivos em lote (BAT)? Escrever um script poupará algum tempo.

Um pouco de história VBScript

Quando VBScript surgiu, ele fazia parte do lançamento do Windows Microsoft Script Technologies. VBScript e JScript (Java Script), foram ambos lançados para facilitar a criação de scripts do lado do cliente em páginas da web. O público-alvo inicial era, obviamente, os desenvolvedores web, e os administradores de sistema não viram necessidade de envolver-se com ele. Além disso, a maioria das informações em torno de aplicações de VBScript, em tecnologias como a WMI (Windows Management Instrumentation) e ADSI (Active Directory Services Interface) só estava disponível para desenvolvedores no SDK (Software Development Kit) e outras informações específicas. Por fim, quando os administradores conseguiram encontrar algumas informações sobre as tecnologias, estvam escritos em pura linguagem de codificação que não era perceptível a menos que você tivesse um desenvolvedor por perto.

Hoje, no entanto, as informações sobre VBScript e tecnologias de script é amplamente disponibilizado e os administradores estão percebendo a utilidade dos scripts para tornar seu trabalho mais fácil.

Fundamentos do VBScript

VBScript trabalha com objetos (especificamente objetos de automação) que são simplesmente um conjunto menor de COM (Component Object Model). COM é o que facilita a funcionalidade de itens como as dll e os exe. Vejamos o nosso exemplo anterior:

Set oDrives = CreateObject ("WScript.Network")
oDrives.MapNetworkDrive "Z:", \\SVR01\Home

Neste exemplo, estamos usando o método CreateObject para ligar o elemento (ou objeto), WScript.Network, e dar-lhe o nome de "oDrives" para uso na linha seguinte. Binding é o método usado para fazer uma conexão com um objeto de automação (WScript.Network) e criar uma nova instância do objeto (oDrives). Vamos agora chamar o método "MapNetworkDrive" em nosso objeto oDrives seguido pelos argumentos direcionando o método para mapear o compartilhamento Home que está em SVR01 à  unidade  Z: \.

Definições

A seguir estão algumas definições utilizadas em VBScript:

Métodos - Funções que um objeto pode executar. No exemplo anterior, foi utilizado o método CreateObject para vincular o objeto WScript.Network.

Variáveis ​- Locais na memória para armazenar dados. Observe o seguinte exemplo:

Comp = InputBox ("Digite o Nome do Computador", "Nome do Computador")

Neste exemplo, estamos chamando uma InputBox (este solicita do usuário para entrar com dados), dando-lhe uma descrição para o usuário que irá ler "Digite o nome do computador" acima da InputBox, e atribuindo "Nome do computador" para o título da janela de entrada quando ela aparece. Toda esta informação é mantida na memória e armazenada como um valor para a variável Comp. A menos que essa informação seja liberado da memória no final do script, sempre que o variável Comp é chamada, o valor que foi digitado pelo usuário será utilizado. As variáveis ​​podem ter qualquer nome descritivo, desde que não seja um nome reservado para uso como um componente de script, por exemplo WScript, Const, Set, etc...

Constantes - semelhantes às variáveis eles armazenam dados na memória, no entanto, a constante deve ser definido dentro do script. Além disso, os valores não podem ser alterados, uma vez que eles são definidos e irá manter os seus valores por todo o script. Veja o seguinte exemplo de script:


Const FIRST_NAME = "Alan"
Const LAST_NAME = "Finn"
Wscript.Echo "Meu nome é", FIRST_NAME, LAST_NAME

Acima, estamos declarando duas constantes; FIRST_NAME e LAST_NAME e atribuindo-lhes os valores de Alan e Finn, respectivamente. A terceira linha utiliza o método de eco do objeto WScript para imprimir a string "Meu nome é", então o primeiro valor constante e, finalmente, o segundo valor constante em uma janela pop-up. Copie e cole o script no bloco de notas e mude as constantes para coincidir com o seu nome, em seguida, salve o arquivo como MeuScript.vbs e clique duas vezes sobre ele para executar.

Operadores e Controle de fluxo - Operadores são usados ​​para comparar expressões. Basicamente, é comparações matemáticas lógicas usadas em VBScript.     Como exemplo, vamos dizer que x = 1 e y = 2. Um operador que comparar os dois e retornar uma resposta ou fazer outra coisa com base nos resultados, tais como:

If x > y then this statement is False
Else this statement is True

Obviamente 1 não é superior a 2, então o comando retorna com Verdadeiro (ainda que 2 é maior do que 1 por causa da maneira como o operador lógico foi usada). Como todas as coisas em VBScript,  você pode fazê-lo ser tão complexa ou tão simples , dependendo das suas necessidades. Além do operador utilizado > (maior que), a afirmação acima também usa um exemplo simples de controle de fluxo. Desde a primeira linha é falsa, a instrução de "fluxo" na segunda linha, que "controla" o comportamento das declarações. Agora, vamos colocar isso junto em VBScript real:

1. x = True 'Atribuir a variável x um valor verdadeiro
2. count = 0 ' atribuir a variável count um valor de 0
3.
4. Do 'loop externo
5. Do While cout < 10 'loop interno
6. count = count + 1 'incremento da contagem por um
7. Wscript.Echo count 'Exibição contagem atual na tela
8. If count = 10 Then 'se essa condição for verdadeira
9. x = False 'definir este valor para Falso
10. Exit Do 'sair do loop interno
11. End If 'fim da instrução If
12. Loop 'Primeira declaração de loop para o loop interior
13. Loop Until x = False 'sair do loop externo

As linhas foram numeradas, para facilidade de explicação. O sinal   (aspas simples) é usado para especificar os comentários que são ignorados enquanto o script é executado. Comentários foram adicionados à direita de cada linha para explicar a funcionalidade. Ok, vamos analisar cada linha para poder entender o que cada uma faz:

1.       Atribuir a variável chamada "x" um valor True (verdadeiro)

2.       Atribuir a variável chamada "count" o valor de 0.

3.       Espaço inserido para separar as instruções de declaração de variáveis ​​da função de script. Simplesmente para tornar o script mais fácil de ler e não é necessária.

4.       Usou o laço "Do" para iniciar um loop. Este tipo de loop (controle de fluxo) vai continuar até que uma condição se torne verdadeira ou falsa dependendo do que for especificado.

5.       Definir as restrições condicionais da instrução loop. Faça o laço enquanto a variável count for inferior a 10.  Lembre-se, nós atribuímos a variável COUNT um valor de 0.

6.       Incrementando a variável count somando mais um a cada passagem do loop. Considerando count = 0 na primeira passagem do loop count será 0 +1 a variável count será então igual a 1, na segunda passagem do loop count = 1 +1, na terceira passagem do loop count = 2 +1, e assim sucessivamente.

7.       Isso exibe o número de contagem atual em uma janela pop-up na tela.

8.       A instrução condicional. Se count é igual a 10, fazer o que está na linha seguinte, caso contrário, vá para a declaração LOOP e loop de volta para a declaração DO. Até que a variável de contagem atenda a essa condição, a declaração vai continuar o loop.

9.       Atribuir um novo valor à variável X. Uma vez que a instrução condicional na linha 8 é cumprida, altere o valor de X para FALSE.

10.    Uma vez que a condição agora foi cumprida, saímos do segundo, ou interior, loop.

11.    Esta declaração é necessária para mostrar o termino do circuito IF na linha 8. Isso é necessário para o script saber onde e quando parar a declaração malha de controle de fluxo.

12.    Esta é a declaração de fechamento para o loop DO na linha 5. Também é necessário dizer que o script quando parar o controle declaração ciclo de fluxo do loop Do interior.

13.    Encerramento do Script. Uma vez que a condição do loop DO for satisfeita. A variável count terá o valor de 10, de modo que a variável X foi alterada para FALSE satisfaz os critérios dessa condição, por conseguinte, o primeiro DO é fechado e o script é encerrado.

Arrays - A função Array é usado para atribuir um conjunto de valores a uma variável. Quando você precisa realizar tarefas administrativas várias vezes o Array oferece um método para armazenar vários valores. O exemplo a seguir atribui três cores para uma Array de variável com o nome Cores:

Cores = array ("vermelho", "verde", "azul")

Também é possível criar uma Array de variável sem usar a instrução de função Array real declarando a variável no início do seu script usando a declaração Dim. Declarar uma variável simplesmente diz ao script que o nome que você está declarando será usado como uma variável dentro do script. Por exemplo:

Dim Cores (2)

Esta declaração informa ao script que estamos declarando uma variável cores nomeadas como uma Array e que ele irá conter três valores. Sim, eu disse três valores. O primeiro item em cada Array é realmente designado como item 0, o que deve ser levado em consideração no cálculo do montante total de objetos na Array. Neste caso, temos três cores para que a partir do zero contamos 0, 1, 2 ou simplesmente subtrair um dos valores totais a serem utilizados. 3-1 = 2.

Continuando, vamos agora atribuir valores a nossa Array de variável chamado Cores começando com o item 0:

Dim Cores (2)
Cores (0) = "vermelho"
Cores (1) = "verde"
Cores (2) = "azul"

Nota - Se você tentou atribuir uma quarta variável (Cores (3) = "branco"), sem aumentar as restrições do array (Dim Cores (3)), o script retornaria um erro dizendo: "Subscrito fora do intervalo".

Obviamente, isso levaria um tempo para criar arrays maiores e o objetivo do script é simplificar e automatizar suas tarefas de trabalho e agora vamos entender  Arrays dinâmicas.

Arrays dinâmicos são mais úteis que Arrays no fato de que eles não exigem que você especifique o número de valores e o tamanho da Array pode mudar todo o script. Este próximo script vai ler todos os computadores do domínio e escrever os resultados para um arquivo de texto:

1. Dim Container
2. Dim ContainerName
3. Dim Computer
4. Dim fso
5. Dim outfile
6.
7. ContainerName = "INTRANET"
8. Set fso = CreateObject("Scripting.FileSystemObject")
9. Set outfile = fso.OpenTextFile("c:\DomainPC.txt", 2, True)
10. Set Container = GetObject("WinNT://" & ContainerName)
11. Container.Filter = Array("Computer")
12. For Each Computer In Container
13. outfile.writeline Computer.Name
14. Next

Como fizemos anteriormente, vamos dividi-lo linha por linha e rever o script:

1.       Declare a variável Container.

2.       Declare a variável ContainerName.

3.       Declare a variável Computer.

4.       Declare a variável fso.

5.       Declare a variável outfile.

6.       Espaço para a separação de declarações a partir da função script.

7.       Atribuir o valor “intranet” (que é o nome do domínio que está sendo consultado) para a variável ContainerName.

8.       Use o método CreateObject para vincular o objeto Scripting.FileSystemObject como um valor para a variável fso. Isso significa que a variável fso agora é um objeto para uso dentro do script.

9.       Use a propriedade OpenTextFile do novo objeto FSO para criar um arquivo de texto no diretório C: \ chamado DomainPC.txt e vinculá-lo à variável outfile. Quanto aos parâmetros no final da declaração, o 2 significa que o arquivo pode ser substituído, e o True designa um arquivo Unicode (false criaria um arquivo ASCII).

10.    Use o método GetObject para procurar no domínio “intranet”  os computadores com contas neste domínio e atribuí-los como valores para a variável Container.  Observação – o parâmetro WinNT:// é sensível a maiúsculas e é usado tanto em dominios NT quanto em domínios AD. Em domínios AD, é preferível usar o LDAP:/ / designação com o caminho LDAP que vamos entrar em mais detalhes em um outro artigo.

11.    Aqui é onde nós declaramos a Array dinâmica. Agora usamos o método do filtro na variável Container para colocar o produto na Array dinâmica que estamos nomeando como Computer.

12.    A partir de um loop For ... Next para controle de fluxo. Nesta linha, estamos dizendo que o script que cada valor na Array variável Computer será atribuído como um valor na variável Container. Nós não podemos simplesmente usar Container para outros métodos, uma vez que já está em uso como uma variável na Array dinâmica por isso devemos criar e usar uma outra variável. O loop iria ler como para cada computador na Array Container, fazer o que se segue no roteiro até que o Next é atingido e não há mais valores na Array Computer.

13.    Use a propriedade WriteLine no objeto outfile e imprimir a propriedade Nome do objeto Computer em cada linha.

14.    Vá para o próximo computador na Array Container até que todos os valores da Array foram escritos, em seguida, parar o loop.

Final

Se você é iniciante no mundo do VBScript, este é provavelmente um assunto um pouco difícil de entender. A intenção deste artigo é apresentar os principais conceitos de VBScript. Algumas partes do script faz sentido porque são lógicas e outras partes são estranhas e confusas. A sintaxe da linguagem se tornará mais fácil com a prática, portanto, não desanime. Tire algum tempo para analisar os scripts e suas explicações e entender o que está ocorrendo em cada linha do script. Eu garanto que qualquer administrador que escreve VBScript (e eu estou incluído) tem um livro ou dois que lista todas as sintaxes e possíveis parâmetros disponíveis em sua mesa para consulta. Um bom local para referência é

http://www.devguru.com/Technologies/vbscript/quickref/vbscript_list.html.

Além disso, dê uma olhada em alguns dos links abaixo para obter uma compreensão mais profunda sobre VBScript:

http://msdn.microsoft.com/library/default.asp?url=/library/enus/script56/html/vsgrpFeatures.asp?frame=true

http://www.winguides.com/article.php?id=2

http://www.winnetmag.com/Articles/Index.cfm?ArticleID=3026

http://www.winnetmag.com/Articles/Index.cfm?ArticleID=5410

Há muitos, muitos mais recursos na Internet, bem como livros disponíveis para mais informações. Os links acima são apenas alguns locais de informação.

VBScript não é algo fácil de entender para quem está iniciando, mas o pouco de trabalho necessário para se familiarizar com ele vai lhe trazer bons resultados para administração de seu ambiente.

Até o próximo artigo.

segunda-feira, 27 de maio de 2013

Salve galera.

Dia destes precisei listar todos os usuários do meu AD (Active Directory) do Windows server 2003 e lançar no Excel. Vamos combinar que neste ponto o AD não é lá muito amigável. Pois bem, para conseguir as informações que estava precisando lancei mão de um script para fazer uma pesquisa no AD e me trazer o que eu estava querendo: Login do usuário, Nome Completo, Descrição e se a conta estava ativa ou não.

Usei o script abaixo:

'================================================
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2

objExcel.Cells(1, 1).Value = "Usuário"
objExcel.Cells(1, 2).Value = "Nome Completo"
objExcel.Cells(1, 3).Value = "Descrição"
objExcel.Cells(1, 4).Value = "Conta Habilitada?"

strDomain = InputBox ("Digite o dominio, ex.: dominio.com.br")

Set DomObj = GetObject("WinNT://" & strDomain )
DomObj.Filter = Array("User")
For Each objUser In DomObj
objExcel.Cells(intRow, 1).Value = objUser.Name
objExcel.Cells(intRow, 2).Value = objUser.FullName
objExcel.Cells(intRow, 3).Value = objUser.Description
objExcel.Cells(intRow, 4).Value = objUser.AccountDisabled
intRow = intRow + 1
Next

objExcel.Range("A1:D1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit

MsgBox "Concluído"

'================================================

Vamos entender o que foi feito:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Conforme você deve ter percebido, na linha 1 digo para criar uma nova instância do excel ( mando abrir o aplicativo), depois digo para que a aplicação fique sempre visível (linha 2)
em seguida mando adicionar uma planilha e crio a variável que vai armazenar o numero da linha da planilha (linhas 3 e 4)

objExcel.Workbooks.Add
intRow = 2


Na primeira linha da planilha coloco os cabeçalhos:

objExcel.Cells(1, 1).Value = "Usuário"
objExcel.Cells(1, 2).Value = "Nome Completo"
objExcel.Cells(1, 3).Value = "Descrição"
objExcel.Cells(1, 4).Value = "Conta Habilitada?"


Crio a variável para pegar o nome do domínio

strDomain = InputBox ("Digite o dominio, ex.: dominio.com.br")

Faço a consulta na base de dados do AD e crio o Array (matriz) com os dados encontrados

Set DomObj = GetObject("WinNT://" & strDomain )
DomObj.Filter = Array("User")


Utilizo um laço para copiar para a planilha os dados da matriz usando a variável intRow criada anteriormente para dizer em que linha da planilha deve ser gravada a informação. Enquanto encontrar dados na matriz o laço continuará se repetindo e acrescentando +1 na variável.

For Each objUser In DomObj
objExcel.Cells(intRow, 1).Value = objUser.Name
objExcel.Cells(intRow, 2).Value = objUser.FullName
objExcel.Cells(intRow, 3).Value = objUser.Description
objExcel.Cells(intRow, 4).Value = objUser.AccountDisabled

intRow = intRow + 1
Next

Por fim formato a primeira linha da planilha onde está os cabeçalhos

objExcel.Range("A1:D1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireCorlumn.AutoFit


E para terminar uma mensagem informando a conclusão da tarefa

MsgBox "Concluído"

Pronto!

Com um pouquinho de curiosidade e muita paciência você poderá coletar outras informações do AD.

Existe um programa chamado WMICodeCreator que tem muitas informações que podem ser usadas para consultas não só no AD, mas sobre outras informações do Windows.

Espero que tenham gostado.

Até mais.

quarta-feira, 22 de maio de 2013

Como Configurar o Windows Server 2008 R2

Após concluir a instalação do Windows Server 2008 R2 o próximo passo é iniciar a configuração. A janela Initial Configuration Tasks será carregada.




Em Provide Computer Information, você irá configurar as seguintes opções:
  • Activate Windows: Nessa opção você irá ativar o Windows.
  • Set time zone: Nessa opção você irá definir o Time Zone, o qual será utilizado nesse servidor.
  • Configure networking: Nessa opção você irá definir as configurações de rede, como por exemplo, se o endereço IP do servidor será fixo ou configurado através do DHCP, endereço de DNS, WINS e se você utilizará o IPV4 ou IPV6.
  • Provide computer name and domain: Nessa configuração você irá definir o nome do seu servidor e se ele irá pertencer a um domínio já existente.
Clique em Activate Windows. Será carregada a caixa de diálogo.


No campo Product Key digite a chave de produto do Windows Server 2008 R2 e em seguida clique no botão Next  (é necessário que o servidor tenha acesso a Internet). Após a ativação do Windows será carregada a caixa de diálogo.



Clique no botão Close para fechar a caixa de diálogo Windows Activation.

Clique em Set time zone, será carregada a caixa de diálogo.



Em Date and Time clique no botão Change time zone para alterar o Time Zone correspondente ao seu país caso não esteja configurado. Se você clicar no botão Change time zone será carregada a caixa de diálogo.



Selecione o Time Zone desejado e em seguida clique no botão OK da caixa de diálogo Time Zone Settings e no botão OK da caixa de diálogo Date and Time.

Clique em Configure networking.



Selecione o adaptador de rede e em seguida clique com o botão direito e escolha a opção Properties. Será carregada a caixa de diálogo.



Em Local Area Connection Properties, você poderá definir quais protocolos pretende utilizar, como por exemplo, o TCP/IPv4 ou TCP/IPv6 incluindo é claro os serviços Client for Microsoft Networks e File and Printer Sharing for Microsoft Networks. Nesse artigo iremos utilizar o TCP/IPv4, selecione o Internet Protocolo Version 4 (TCP/IPv4) e em seguida clique no botão Properties.



Em Internet Protocolo Version 4 (TCP/IPv4) Properties você irá definir se o servidor receberá as configurações de endereço de IP, mascará de sub-rede, Default gateway e DNS via DHCP ou se você irá configurar manualmente. Nesse artigo iremos configurar manualmente. A configuração ficará assim:



Após concluir a configuração de rede clique no botão OK da caixa de diálogo Internet Protocolo Version 4 (TCP/IPv4) Properties e no botão Close da caixa de diálogo Local Area Connection Properties.

Clique em Provide computer name and domain, será carregada a caixa de diálogo.



Na caixa de diálogo System Properties clique no botão Change. Será carregada a caixa de diálogo.



No campo Computer name digite o nome do servidor e na área Member of você irá definir se o servidor será um membro de um Domínio ou de um Grupo de Trabalho. Nesse artigo nosso servidor será membro de um Grupo de Trabalho. Na caixa de diálogo Computer Name/Domain Changes clique no botão OK. Será carregada a caixa de diálogo.



Na caixa de díalogo Computer Name/Domain conforme mostra a figura 1.12 é solicitado o restart no servidor para que as alterações possam ser aplicadas. Clique no botão OK e em seguida clique no botão Close da caixa de diálogo System Properties e finalmente clique no botão Restart Now.



Em Update This Server, você irá configurar os seguintes itens:
  • Enable automatic updating and feedback: Nessa configuração você irá definir como serão instaladas as atualizações no seu servidor de forma automática ou manualmente e também definir como serão coletados os feedbacks, as quais são enviadas para Microsoft.
  • Download and install updates: Nessa configuração você irá checar via Windows Update quais atualizações são necessárias para serem instaladas no seu servidor.
Clique em Enable automatic updating and feedback.



Na caixa de diálogo Enable automatic updating and feedback se você escolher a opção Enable automatic updating and feedback (recommended) as atualizações serão instaladas automaticamente e os erros serão reportados para Microsoft. Se você escolhe a opção Manually configure settings você poderá configurar quando as atualizações serão instaladas e como os feedbacks serão coletados. Nesse artigo iremos escolher a opção Enable automatic updating and feedback (recommended). A opção Enable automatic updating and feedback ficará assim:



Clique na opção Download and install updates, será carregada a janela.



Clique no botão Install updates e aguarde até os downloads e as instalações das atualizações sejam concluídas.

Em Customize This Server, você irá configurar os seguintes itens:
  • Add roles: Selecionando essa opção você poderá adicionar os serviços no Windows, como por exemplo, Active Directory, DNS, File Services, Fax Server, Print Server entre outros.
  • Add features: Selecionando essa opção você poderá adicionar os recursos do Windows, como por exemplo, .NET Framework 3.5.1, BitLocker Drive Encryption, BranchCache, Connection Manager Administration Kit, Desktop Experience, Group Policy Management entre outros.
  • Enable Remote Desktop: Selecionando essa opção você ativará o Remote Desktop para administrar o servidor remotamente. O Remote Desktop vem desativado por padrão.
  • Configure Windows Firewall: Selecionando essa opção você irá configurar o Windows Firewall, o qual por padrão vem ativado.
Clique em Add roles.



Clique no botão Next para continuar.



Em Select Server Roles conforme mostra a figura 1.18 você poderá instalar qualquer um dos serviços disponíveis. Esse assunto será abordado em outro artigo. Clique no botão Cancel para sair do Assistente de instalação.

Clique em Add features.



Em Select Features, conforme mostra a figura 1.19 você poderá instalar qualquer um dos recursos disponíveis. Esse assunto será abordado em outro artigo. Clique no botão Cancel para sair do Assistente de instalação.

Clique em Enable Remote Desktop. Será carregada a caixa de diálogo.



Na área do Remote Desktop você tem três opções:
  • Don´t allow connections to this computer: Selecionando essa opção as conexões remotas para esse servidor não serão permitidas.
  • Allow connections from computers running any version of Remote Desktop (less secure): Selecionando essa opção permitira que qualquer versão do Remote Desktop ou TS RemoteApp se conecte para o seu servidor. Essa opção é considera menos segura, porém ela poderá ser utilizada caso você não tenha certeza das versões dos Remote Desktops que estarão se conectando ao seu servidor.
  • Allow connections only from computers running Remote Desktop with Network Level Authentication (more secure): Selecionando essa opção permitira que somente computadores executando as versões do Remote Desktop ou TS RemoteApp com Network Level Authentication (NLA) se conecte ao seu servidor. Essa opção é considerada mais segura, porém você precisa ter certeza que os Remote Desktops que se conectarão ao seu servidor estão utilizando a versão do Remote Desktop com NLA.
Selecione a opção desejada e clique no botão OK.



Na caixa de diálogo Remote Desktop Connection clique no botão OK e na caixa de diálogo System Properties clique no botão OK. A opção Enable Remote Desktop



Clique em Configure Windows Firewall.



Por padrão o Windows Firewall vem ativado no Windows Server 2008 R2. Para alterar as configurações clique em Turn Windows Firewall on or off.



Na janela Customize Settings você tem duas sessões para configurar o Windows Firewall. Escolha as opções desejadas e em seguida clique no botão OK.
Home or work (private) network location settings
  • Turn on Windows Firewall: Selecionando essa opção todo tráfego vindo da rede interna para o seu servidor será bloqueado, exceto para aqueles que estiverem cadastrados na guia Exceptions.
  • Block all incoming connections, including those in the list of allowed programs: Selecionando essa opção todo tráfego vindo da rede interna para o seu servidor será bloqueado, incluindo aqueles que estiverem cadastrados na guia Exceptions. Você não será notificado quando o Windows Firewall bloquear um programa. Selecione essa opção quando você estiver conectado em uma rede menos segura.
  • Notify me when Windows Firewall blocks a new program: Selecionando essa opção novos programas que forem bloqueados pelo Windows Firewall será exibido uma notificação do bloqueio.
  • Turn off Windows Firewall (not recommended): Selecionando essa opção todo trafego vindo da rede interna para o seu servidor será permitido. Evite utilizar essa configuração. Desligando o Windows Firewall tornará o seu servidor mais vulnerável para ataques.
Public network location settings
  • Turn on Windows Firewall: Selecionando essa opção todo tráfego vindo da rede externa para o seu servidor será bloqueado, exceto para aqueles que estiverem cadastrados na guia Exceptions.
  • Block all incoming connections, including those in the list of allowed programs: Selecionando essa opção todo tráfego vindo da rede externa para o seu servidor será bloqueado, incluindo aqueles que estiverem cadastrados na guia Exceptions. Você não será notificado quando o Windows Firewall bloquear um programa. Selecione essa opção quando você estiver conectado em uma rede menos segura.
  • Notify me when Windows Firewall blocks a new program: Selecionando essa opção novos programas que forem bloqueados pelo Windows Firewall será exibido uma notificação do bloqueio.
  • Turn off Windows Firewall (not recommended): Selecionando essa opção todo trafego vindo da rede externa para o seu servidor será permitido. Evite utilizar essa configuração. Desligando o Windows Firewall tornará o seu servidor mais vulnerável para ataques.
Para finalizar as configurações na janela Initial Configuration Tasks selecione a opção Do not show this window at logon e em seguida clique no botão Close.