Script de PowerShell que no hace nada

tito -  
zucrezel Mensajes publicados 30 Estado Miembro -
Hola a todos y a todas
Tengo un pequeño problema, ¿o realmente es uno?
He seguido un tutorial en la red para la importación de un archivo csv en PowerShell con el fin de crear las cuentas de las personas. No veo ningún mensaje de error, pero aún así las cuentas no se están creando. ¿Tienen alguna idea de dónde podría venir esto, por favor?

Gracias de antemano a quien pueda iluminarme... :s

Import-Module ActiveDirectory
{
$Users = Import-Csv -Delimiter ";" -Path "C:\Users\adm-tito\Desktop\test.csv"
foreach($temp in $Users) { }

$upn = $temp.SamAccountName + "Nougatine.global"
$name = $temp.firstname + " " + $temp.Lastname
$fName = $temp.Firstname
$SAM = $temp.SAMAccountName
$password = $temp.Password
$description = $temp.Description
$ou = $temp.OU

try{

New-ADUser -Name $name -SamAccountName $SAM -UserPrincipalName $upn -DisplayName $name -GivenName $fName -SurName $temp.Lastname -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -PasswordNeverExpires $true -Description $description -Path $ou

echo "Usuario añadido: $name"

} catch {
echo "Usuario no añadido: $name"
}

}

Configuración: Windows / Chrome 59.0.3071.115

8 respuestas

jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
Hola,

Ya:
 foreach($temp in $Users) { } 

... Has colocado mal tu llave de cierre...

--
Atentamente,
Jordane
0
tito
 
Hola Jordan, Gracias por tomarte el tiempo para ocuparte de mi problema, bueno, cuando lo quito para ponerlo al final me dice que me falta una llave en el lugar donde lo quito... "Me sale Cuerpo de la instrucción faltante en el bucle foreach".

Entonces no creo que sea eso. ¿Ves algo más?
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
También tienes una llave de apertura de más al principio de tu script, creo....

prueba esto:
 Import-Module ActiveDirectory $Users = Import-Csv -Delimiter ";" -Path "C:\Users\adm-tito\Desktop\test.csv" foreach($temp in $Users) { $upn = $temp.SamAccountName + "Nougatine.global" $name = $temp.firstname + " " + $temp.Lastname $fName = $temp.Firstname $SAM = $temp.SAMAccountName $password = $temp.Password $description = $temp.Description $ou = $temp.OU try{ New-ADUser -Name $name -SamAccountName $SAM -UserPrincipalName $upn -DisplayName $name -GivenName $fName -SurName $temp.Lastname -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -PasswordNeverExpires $true -Description $description -Path $ou Write-Host "Usuario agregado: $name" } catch { Write-Host "Usuario no agregado: $name" } } 


NB: En PowerShell .. usamos Write-Host y no echo.
0
tito
 
¡De acuerdo, gracias! Lo intentaré cuando llegue a casa y te mantendré informado.
0
tito
 
Hola, intenté lo que me dijiste y ahora tengo la siguiente línea roja:
"El término << "Write-Host" "Usuario no agregado: $name" >> no se reconoce como nombre de un cmdlet, función, archivo de script o programa ejecutable. Verifique la ortografía del nombre, o si existe una ruta de acceso, verifique que la ruta de acceso en la línea: 13 Carácter: 48

+ Write Host "Usuario no agregado: $name" <<<<
+ CategoryInfo: ObjectNotFound: <Write-Host"Util... agregado: $name"String> [], CommandNotFoundException
+ FullyQualifiedErrorId: CommandNotFoundException

¿Alguna idea?
0
tito
 
Hola Jordan, ¿me has olvidado?
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
¿Estás en PowerShell 2, 3 u otra versión?
0
tito > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
 
Nombre Valor
---- -----
PSVersion 5.1.14393.1358
PSEdition Escritorio
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.1358
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
0
zucrezel Mensajes publicados 30 Estado Miembro 4
 
Hola,

Dada la mensaje de error "Command NotFoundException", olvidaste el espacio en la línea 21 entre el nombre de la CmdLet (Write-Host) y su parámetro (lo escribiste bien en la línea 19).
Sin el separador de espacio, toda la línea 21 se considera como una CmdLet que no es reconocida por PowerShell.

línea 21 antes de la corrección:
 Write-Host"Usuario no agregado: $name"


después de la corrección:
 Write-Host "Usuario no agregado: $name"
0
tito
 
Hola zucrezel,
Te agradezco por prestar atención a mi caso. Solo hice un copiar y pegar de lo que me dieron. Gracias por la corrección :) Funciona digamos en parte porque ya no tengo el error, pero mis usuarios todavía no se crean y no veo por qué me ocurre esto. El script se ejecuta, pero al final tengo 12 "Usuario no añadido", que es el número de usuarios que intento añadir. ¿Podrías ver qué está mal, por favor?
De verdad, muchas gracias de nuevo por tu ayuda.
0
zucrezel Mensajes publicados 30 Estado Miembro 4
 
Hola,
En el catch añade la recuperación de los mensajes de error (puedes tener un problema de derechos de escritura en el AD):
$errmsg=$_.Exception.message $errinfo=$_.Exception.itemname write-host $errinfo $errmsg 
0