Encontre a lista de PCs no site específico do AD

3

Existe uma maneira de encontrar uma lista de PCs em um site específico da AD? Anteriormente, usávamos UOs diferentes para cada site, o que facilitaria o rastreamento de PCs. Agora, temos apenas uma UO, portanto, a única maneira viável de encontrar o PC em cada site seria obter a lista de PCs por meio de sites da AD. qualquer ajuda nesse sentido será muito apreciada e / ou se houver uma maneira melhor?

    
por Brown 28.06.2017 / 11:03

4 respostas

0

Fora da caixa, as informações do computador / site não são armazenadas no AD. MAS, não há nada que o impeça de colocá-lo lá. Você pode implantar um script de inicialização do computador ou uma tarefa agendada nos computadores do domínio para que cada computador grave seu valor de site atualmente atribuído a um atributo em seu próprio objeto de computador do AD. Apenas dê permissão ao diretor de segurança 'SELF' para modificar qualquer atributo não usado que você decidir usar em objetos de computador descendentes. Essa informação pode ser facilmente consultada para determinar quais clientes estão associados a qual site. Certifique-se de que seu script seja responsável por clientes não associados.

Aqui está um exemplo de script do PowerShell que pode ser executado a partir de um cliente Windows associado ao domínio e não requer a importação de módulos adicionais do PowerShell. Isso gravará o valor atual do site AD no atributo 'extensionattribute8' do objeto de computador no AD:

$obj = new-object -com ADSystemInfo
$type = $obj.gettype()
$adsite = $type.InvokeMember("sitename","GetProperty",$null,$obj,$null)
if($adsite -eq $null){$adsite = "UNKNOWN"}
$root = [ADSI]"LDAP://DC=Contoso,DC=com"
$search = [adsisearcher]$root
$name = $ENV:COMPUTERNAME
$Search.Filter = "(&(SamAccountName=$name$))"
$computer = $Search.FindOne() | foreach{$cproperties=$_.GetDirectoryEntry()}
$adsiteinad = $cproperties.extensionattribute8
if($adsiteinad -eq $adsite){}else{
    $cproperties.extensionattribute8 =  [string]$adsite
    $cproperties.SetInfo()
}

Apenas substitua DC = Contoso, DC = com pelo nome distinto do seu domínio e substitua 'extensionattribute8' por qualquer atributo de valor único não utilizado disponível. Em seguida, forneça a permissão de leitura / gravação principal 'SELF' ao atributo que segmenta objetos de computador descendentes. Execute o script como uma tarefa agendada SYSTEM ou em um script de inicialização do computador do PowerShell e ele preencherá o atributo no objeto de computador do domínio. O script compara o valor do atributo atual com o nome do site e só tenta gravar no AD se eles não corresponderem. Isso é para evitar gravações desnecessárias no AD. Obviamente, você deve testar isso antes de aplicá-lo em um grande número de computadores.

Em seguida, você pode consultar seu domínio para todos os computadores atribuídos a um site específico usando este comando do PowerShell:

Get-ADComputer -Filter 'extensionAttribute8 -eq "SITENAME"'
    
por 28.06.2017 / 21:20
2

Você não pode, na verdade. As máquinas não são associadas aos Sites no AD (como tal).

As sub-redes são associadas aos Sites, portanto, a qualquer momento, você poderia fazer uma varredura NMap da sub-rede ou sub-redes associadas a um Site para obter uma lista de IPs que você poderia correlacionar a uma lista de nomes de máquinas. Apenas válido naquele momento.

Cenário: Laura em vendas é frequentemente em Denver, mas hoje ela está visitando o escritório de Atlanta. Site diferente, mas nenhuma mudança na AD foi feita por qualquer pessoa, seja um administrador ou até mesmo nos bastidores. Seu laptop sabe em qual site ele está no momento, porque isso controla as coisas sobre o processo de login, etc.

Então deixe-me perguntar - qual problema você está tentando resolver? Qual estado final você quer? Você precisa rastrear máquinas por site? Obtenha uma solução de inventário.

    
por 28.06.2017 / 15:35
2

Esta informação não é armazenada nem mantida no AD.

Um cliente armazena as informações do site no registro.

É possível reunir as informações do site do cliente remotamente usando o comando:

nltest / server: nome_do_computador / dsgetsite

    
por 28.06.2017 / 15:47
1

Esta não é uma resposta direta para sua pergunta, mas uma alternativa. Desde diretório Active não armazena as informações que você está procurando, e as verificações manuais ou executando um script para percorrer todos os computadores pode ser muito demorado.

Como o site é baseado na sub-rede em que o computador está, um software de inventário seria uma boa maneira de localizar todas as máquinas em uma ou mais sub-redes.

Para os nossos domínios, nós Inventário PDQ . Ele permite a verificação automática em segundo plano e coleções dinâmicas que listam todos os computadores com parâmetros especificados. Você poderia fazer uma coleção para cada um dos seus sites e todos eles seriam atualizados dinamicamente. Seus preços são bastante razoáveis, especialmente se você começar a usar mais recursos.

    
por 28.06.2017 / 16:33