Essa query é muito útil quando se precisa determinar quais servidores possuem SQL Server instalado e sua respectiva versão.

SELECT sys.Netbios_Name0, arp.DisplayName0
FROM v_R_System sys
JOIN v_Add_Remove_Programs arp ON sys.ResourceID = arp.ResourceID
JOIN v_FullCollectionMembership fcm on sys.ResourceID=fcm.ResourceID
WHERE DisplayName0 in ('Microsoft SQL Server 2000','Microsoft SQL Server 2005','Microsoft SQL Server 2008 (64-bit)','Microsoft SQL Server 2008 R2 (64-bit)')
GROUP BY sys.Netbios_Name0,arp.DisplayName0

Quando se trabalha com o suporte a computadores desconhecidos no SCCM 2007, é interessante validar se um computador que está sendo importado já possui o mac address cadastrado no banco de dados do sccm ou não (por exemplo, no caso de uma reinstalação).

Segue o código do método para validação utilizando o SCCM 2007 SDK (em C#):

public static bool MacAddressExists(string macAddress, out string computerName)
{
     computerName = string.Empty;

     IResultObject computerSettingsQuery = mgr.QueryProcessor.ExecuteQuery(
          "Select * from SMS_R_System where MACAddresses = '" + macAddress + "'");

     foreach (IResultObject computer in computerSettingsQuery)
     {
           computerName = computer["Name"].StringValue;
     }

     if(!string.IsNullOrEmpty(computerName))
          return true;
     else
          return false;
}

* Esse código permite receber o nome do computador que possui o mac address que está sendo pesquisado para utilização na mensagem de retorno.

O netsh é um comando muito poderoso existente a partir do Windows 2003.
Abaixo, segue uma lista de tarefas interessantes que podem ser realizadas através dele:

- Listar interfaces de rede
netsh interface ip show interfaces

- Listar endereços IPs configurados
netsh interface ip show addresses

- Listar servidores de DNS em uso
netsh interface ip show dnsservers

- Configurando endereço
netsh interface ip set address “Local Area Connection” static 187.45.241.x 255.255.255.0 187.45.241.1

- Adicionando um segundo endereço IP
netsh interface ip add address “Local Area Connection” 187.45.241.216 255.255.255.0

- Adicionando um servidor de DNS primário
netsh interface ip set dnsservers “Local Area Connection” static 187.45.201.34 primary

- Adicionando um servidor de DNS secundário
netsh interface ip add dnsservers “Local Area Connection” 187.45.201.35 index=2 skipassource=true

- Desativando uma placa de rede
netsh interface set interface “Local Area Connection” admin=DISABLED

Posted in Windows | No Comments »

Em algumas situações, durante o processo de deploy de servidores, é necessário a criação de variáveis de ambiente.

Uma maneira simples de se fazer é utilizando o comando abaixo:

REG ADD “HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment” /v VAR_NAME /t REG_SZ /d VAR_VALUE

Onde:
VAR_NAME: é o nome da variável
VAR_VALUE: é o valor da varíavel

Posted in Windows | No Comments »

Um dos erros mais comuns de ocorrer quando se integra o WSUS, em outro servidor, ao SCCM 2007, é referente à configuração.

Após instalar o WSUS no servidor remoto, você não deve configura-lo por lá, mas sim pelo console de administração do SCCM.

Um dos erros mais comuns encontrados no log é o seguinte:

The installed WSUS build (0.0.0.0) does not have the valid and supported WSUS Administration DLL assembly version.
Remote configuration failed on WSUS Server.~ $$

Essa mensagem nos indica que o SCCM não conseguiu configurar o servidor remoto, pois ele não possui as dlls de manipulação do WSUS. Para resolver o problema, basta que no seu servidor do site principal, você instale somente a interface
de gerenciamento do WSUS.

WebRequet com autenticação

fevereiro 3rd, 2011

Recentemente eu precisei fazer uma WebRequest passando um usuário e senha.

Segue o código em C#:

string responseContent = string.Empty;
string url = "http://minha_url/ws.json";
string authDataJoined = username + ":" + password;


CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));

WebRequest request = WebRequest.Create(url);
request.Proxy = null;
request.Method = "GET";
request.Timeout = 60000;
request.Credentials = credCache;
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authDataJoined)));

WebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
     responseContent = reader.ReadToEnd();
}

Bem tranquilo!

Posted in ASP.NET, C# | No Comments »

Uma das melhores maneiras de organizar os computadores nas collections no SCCM 2007 é fazer com que as collections tenham como referência, a OU que o computador está localizado no Active Diretory.

Para fazer isso, siga os passos abaixo:

1) Crie uma nova collection

2) No “Membership Rules”, selecione “Query Based”, localize a opção “System Resource” e a propriedade “System OU Name”

Dica: você pode selecionar o OU clicando no botão “Values”, pois ele irá te mostrar todos os valores que já existem em seu banco de dados.

Importante: para que a informação “System OU Name” possa ser populada no banco de dados, você deve habilitar o “Active Directory System Group Discovery” nas opções de discovery methods.

Segue o link de todos os blogs dos times da Microsoft

http://blogs.technet.com/blogms/pages/directory-of-microsoft-team-blogs.aspx

Informação direto da raiz !!!!!

Um dos controles muito poderosos do ASP.NET é RegularExpression Validator, onde podemos garantir que os dados fornecidos por um usuário estejam em determinado formato e com um comprimento mínimo.

 Como gerar as expressões regulares não é um trabalho muito agradável, no endereço http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5 existem uma série de expressões já prontas :)

 Alguns exemplos:

Validar data no formato DD/MM/YYYY

^(([0-9])|([0-2][0-9])|(3[0-1]))\/(([1-9])|(0[1-9])|(1[0-2]))\/(([0-9][0-9])|([1-3][0,9][0-9][0-9]))$

 []‘s

Para se descobrir quais os campos fazem parte de uma tabela, pode-se executar a query abaixo modificando apenas o nome da tabela:

SELECT SC.Name As ‘Colunas’ FROM SysObjects SO
INNER JOIN SysColumns SC ON SO.id = SC.id
WHERE SO.Name=’NomeDaTabela’

[]‘s