Estoy trabajando con un script de Powershell que agrega tareas programadas a los sistemas en nuestro dominio. Cuando ejecuto este script, me pedirá mi contraseña. A veces apunto la contraseña y comienza el proceso, que bloquea mi cuenta. ¿Hay alguna forma de verificar mis credenciales para asegurarme de que lo que escribí se validará con el dominio?
Me gustaría encontrar una manera de consultar el controlador de dominio. He realizado algunas búsquedas en Google y debería poder hacer una consulta WMI y atrapar un error. Me gustaría evitar ese estilo de validación si es posible.
¿Algunas ideas? Gracias por adelantado.
domain
powershell
password
Doltknuckle
fuente
fuente
AccountManagement.PrincipalContext.ValidateCredentials()
no (si proporciona una cadena de seguridad para la contraseña)?ActiveDirectory
módulo para hacer tu consulta LDAP?Esto es lo que he usado en el pasado; se supone que funciona para cuentas de máquinas locales y 'directorio de aplicaciones', pero hasta ahora solo lo he usado con éxito con credenciales de AD:
fuente
$context
como argumento al constructor. PowerShell convertirá automáticamente las cadenas en una enumeración. Mejor aún, solo haz[System.DirectoryServices.AccountManagement.ContextType]
el tipo de$context
. Además, ¿por qué estás usandobegin
yprocess
aquí? La canalización parece una forma extraña de usar esta función.$context
parámetro[System.DirectoryServices.AccountManagement.ContextType]
no es una opción, porque el ensamblado que contiene no se carga hasta que se ejecuta el cuerpo de la función ; usar la canalización es útil si desea validar múltiples credenciales.Add-Type
llamada no se pueda mover fuera de la función, antes de que se ejecute su definición. Dudo que unaAdd-Type
llamada se ejecute incondicionalmente repetidamente dentro de la función, incluso si ya está cargada, de todos modos. Validar múltiples credenciales simultáneamente parece una situación extraña en primer lugar. En el raro caso de que eso sea lo que desea, puede completar fácilmente la llamadaForEach-Object
, por lo que no veo una razón para complicar la función con ella.Esta publicación me pareció útil, sin embargo, no resolvió mi problema, ya que estaba tratando de ejecutarla desde un script con la cuenta de administrador local conectada. No parece funcionar como administrador local (solo cuando está conectado como usuario de dominio).
Sin embargo, finalmente logré obtener una solución que funcionara y, dado que era un problema, pensé en compartirla aquí para que cualquier otra persona con este problema tenga la respuesta aquí. Ambas respuestas en una página, según sus necesidades.
Tenga en cuenta que más arriba en el scipt (no incluido aquí, ya que esta es solo la sección de obtención de credenciales) powergui está instalado y es un requisito para este código a continuación (así como la línea "Add-PSSnapin Quest.ActiveRoles.ADManagement"). No estoy seguro de qué powergui hace es diferente, pero nadie más podría decirme y funciona.
Sustituya su propio nombre de dominio en las secciones "nombre_dominio".
fuente
(todavía) Otra versión:
y
fuente