scripts query microsoft for comandos active powershell active-directory

powershell - query - Verificar nombres de computadora AD contra archivo CSV



powershell active directory scripts (2)

Intento escribir un script de Powershell que importará una lista de nombres de computadora de un archivo CSV y la comparará con todos los nombres de computadora en AD. Necesito que muestre una lista de nombres del archivo CSV que no existen en AD.

He estado jugando con estos comandos pero no hacen exactamente lo que quiero.

$import = Import-Csv -Path C:/Users/username/Desktop/test.csv $AD-Names = Get-ADComputer -filter * | Select -Expand Name Compare-Object $import $AD-Names

Esto parece darme una lista de todo lo diferente de ambas variables, que es una lista extremadamente larga. Realmente solo necesito saber qué nombres de computadora en el archivo CSV no están en AD.


Primero, ¿por qué necesita un archivo csv si solo hay nombres de computadora? Los archivos CSV generalmente se usan para almacenar una tabla en un archivo de texto simple.

Si su CSV solo contiene los nombres de las computadoras y solo desea verificar los nombres de las computadoras, esto podría funcionar para usted:

$OutputComputers = @(); $InputComputers = Import-Csv input.csv -Header ComputerName; $AdComputers = Get-ADComputer -Filter ''Name -like "*"''; $InputComputers | ForEach-Object {$i = 0} { if ($_.ComputerName -notin $AdComputers.Name) { $OutputComputers += New-Object PsObject -property @{ ''ComputerName'' = $_.ComputerName } } } $OutputComputers | Export-Csv output.csv -Delimiter ";" -Encoding UTF8 -Force -NoTypeInformation

Espero eso ayude.


Simplemente compare los nombres de su CSV con la lista de nombres de AD (voy a suponer que el título de la columna del CSV es Name ):

$ADNames = Get-ADComputer -Filter * | Select-Object -Expand Name Import-Csv ''C:/path/to/input.csv'' | Where-Object { $ADNames -notcontains $_.Name } | Export-Csv ''C:/path/to/not_in_AD.csv'' -NoType

Nota al margen: $AD-Names no es un nombre de variable válido. Cambie el guión por un guión bajo o quítelo por completo, o ponga el nombre de la variable entre llaves ( ${AD-Names} ).