Hola.
El informático me a dicho, que en vez de hacerlo directamente, primero sacar un excel para ver como está la información.
En el Copilot, he puesto:
a través de powershell, exportar a un Excel del directorio activo, de la pestaña general, los campos nombre, apellido, y número de teléfono. De la pestaña teléfonos, los campos domicilio, móvil y notas. Solicitar en que unidad organizativa empezar el proceso. Todo en un script.
# Importar el módulo de Active Directory
Import-Module ActiveDirectory
# Solicitar la unidad organizativa (OU) al usuario
$ou = Read-Host "Introduce la ruta de la Unidad Organizativa (OU) desde la que deseas comenzar el proceso"
# Obtener los usuarios del directorio activo en la OU especificada
$users = Get-ADUser -Filter * -SearchBase $ou -Property GivenName,Sn,TelephoneNumber,HomePhone,Mobile,info
# Crear un nuevo objeto Excel
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$workbook = $excel.Workbooks.Add()
$worksheet = $workbook.Worksheets.Item(1)
# Escribir los encabezados en la primera fila
$worksheet.Cells.Item(1, 1).Value = "Nombre"
$worksheet.Cells.Item(1, 2).Value = "Apellido"
$worksheet.Cells.Item(1, 3).Value = "Número de Teléfono"
$worksheet.Cells.Item(1, 4).Value = "Teléfono Domicilio"
$worksheet.Cells.Item(1, 5).Value = "Teléfono Móvil"
$worksheet.Cells.Item(1, 6).Value = "Notas"
# Escribir los datos de los usuarios en las filas siguientes
$row = 2
foreach ($user in $users) {
$worksheet.Cells.Item($row, 1).Value = $user.GivenName
$worksheet.Cells.Item($row, 2).Value = $user.Sn
$worksheet.Cells.Item($row, 3).Value = $user.TelephoneNumber
$worksheet.Cells.Item($row, 4).Value = $user.HomePhone
$worksheet.Cells.Item($row, 5).Value = $user.Mobile
$worksheet.Cells.Item($row, 6).Value = $user.info
$row++
}
# Guardar el archivo Excel
$excelFilePath = "C:\teams\UsuariosAD.xlsx"
$workbook.SaveAs($excelFilePath)
$excel.Quit()
Write-Host "Exportación completada. Archivo guardado en $excelFilePath"
Al ejecutarlo sale este error (he borrado el nombre de la empresa por las xxxxxx)
al lanzar $users = Get-ADUser -Filter * -SearchBase $ou -Property GivenName,Sn,TelephoneNumber,HomePhone,Mobile,info da este error
Get-ADUser : El valor distinguishedName suministrado debe pertenecer a una de las particiones siguientes:
'DC=XXXXXXXX,DC=local , CN=Configuration,DC=XXXXXXXXXX,DC=local ,
CN=Schema,CN=Configuration,DC=XXXXXXX,DC=local , DC=ForestDnsZones,DC=XXXXXXXX,DC=local ,
DC=DomainDnsZones,DC=XXXXXXXXX,DC=local'.
En línea: 1 Carácter: 10
+ $users = Get-ADUser -Filter * -SearchBase $ou -Property GivenName,Sn,TelephoneNu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm
ands.GetADUser
Que está mal, o o cual es el formato en el que se debe indicar la OU con la que se va a trabajar?
Gracias