Especifique credenciais para executar o script Powershell na consulta AD

1

Eu quero executar um script PowerShell para consultar o AD de uma máquina que NÃO esteja no domínio.

Basicamente, quero consultar se já existe uma conta de computador no domínio dessa máquina e criá-la, se não houver. Como isso tem que acontecer antes que a máquina se junte ao domínio, presumo que precisarei especificar algumas credenciais para permitir sua execução. (Sou muito novo no Powershell, então peço desculpas se essa é uma pergunta de novato!)

O script que estou usando para verificar a conta está abaixo e, depois que ele for executado, ele ingressará no domínio usando o nome de computador especificado.

Você pode me dizer como especificar algumas credenciais de domínio para executar esta seção do script como?

Felicidades,

Ben

$found=$false
$thisComputer = <SERVICE TAG FROM BIOS>
$ou = [ADSI]"LDAP://OU=My Computer OU,DC=myDomain,DC=com"
foreach ($child in $ou.psbase.Children ) {   
    if ($child.ObjectCategory -like '*computer*') {
        If ($child.Name -eq $thisComputer) {
            $found=$true
        } 
    }
}

If ($found) { <DELETE THE EXISTING ACCOUNT> }
    
por Ben 25.05.2010 / 12:19

4 respostas

3

Até onde eu sei, não há como passar credenciais alternativas usando o acelerador de tipo ADSI. Duas maneiras de tentar contornar isso em seu código são:

  • execute o powershell.exe como o usuário do domínio em vez do usuário local - isso fará com que tudo no script use as credenciais de domínio
  • use o cmdlet Invoke-Command , que permite que você passe um bloco de script para ser executado e credenciais alternativas.

Eu nunca experimentei nenhum destes, por isso vai demorar um pouco de tentativa e erro.

Outra opção que pode ser mais flexível para você é não usar o acelerador de tipo ADSI. Existem duas maneiras de fazer isso.

  1. Use as classes DirectoryService do .NET framework. Aqui está um bom artigo que orienta você nesse processo. Inclui um exemplo usando credenciais alternativas.
  2. Use os cmdlets Gerenciamento do Active Directory da Quest . Estes são wrappers em torno de um monte de coisas AD que facilitam muito as coisas. Eles também permitem que você passe credenciais alternativas.
por 25.05.2010 / 16:11
2

Desculpe - este deve ser um comentário realmente, não uma resposta, mas eu queria postar o código de trabalho caso seja útil anoyone else.

MattB foi um sucesso! Tem o seguinte trabalho:

$thisComputer = <SERVICE TAG FROM BIOS>
$found = $false

$strFilter = "(&(objectCategory=Computer))"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry "LDAP://mydomain.com", <USER>, <PASSWORD>

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
    {$objItem = $objResult.Properties; 
        if ($objItem.name -eq $thisComputer) {
            $found = $true
        }   
    }

if ($found) { <DELETE MACHINE ACCOUNT > }

Agora eu provei o conceito, criptografarei a senha para torná-la um pouco mais segura.

Obrigado pela sua ajuda!

    
por 25.05.2010 / 18:42
1

Você pode continuar a usar o acelerador [ADSI] e passar as credenciais adicionando a seguinte linha:

Get-credencial

Esta deve ser uma das primeiras coisas no seu script. No meu próprio ambiente, eu precisava escrever um script para se conectar a um domínio diferente. Com esse domínio diferente, eu tinha credenciais diferentes, então escrever o seguinte me permitiu fazer o que eu precisava fazer:

Get-Credential Import-csv test.csv | para cada { $ ou = [ADSI] "LDAP: // ou = usuários, dc = teste, dc = com" $ newuser = $ ou.Create ("Usuário", "cn = $ name" $ newuser.SetInfo ()

Eu entendo que o código acima foi usado para criar um usuário, mas o conceito deve ser válido para qualquer outra ação

    
por 23.07.2010 / 03:21
0

Não parece que você ainda precisa dele, mas aqui é um link sobre como criar uma credencial do PowerShell.

    
por 26.05.2010 / 05:41