{{tag>poweshell}} ===== Powershell ===== Para ejecutar el powershell desde el cuadro buscar-> powershell o desde consola ejecutamos Powershell El prompt cambiará y aparecerá como **PS C:\>** Para saber la versión que tenemos de powershell Abrimos una sesión de powershell y ejecutamos $PSVersionTable El resultado será algo así PS C:\Users\Administrador> $PSVersionTable Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.42000 BuildVersion 6.3.9600.19170 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2 También podemos usar **$PSVersionTable.PSVersion** para saber la versión y el número de actualización de la misma En este caso es una versión vieja 4.0 que viene por defecto con un windows server 2012 Para actualizar la versión debemos de descargarla desde la página de Microsoft === Versión 6 === Esta nueva versión de Powershell, no podemos actualizarla como con las versiones anteriores (las que van desde la 1.0 a la 5.1 ). Hay que quitarlas antes de proceder a instalar la versión 6, que hay que descargarla desde https://github.com/PowerShell/PowerShell ==== Sacar información del directorio activo ==== Lo primero es carga el módulo del AD desde el powershell con import-module ActiveDirectory y si queremos sacar un listado po pantalla de equipos de nuestro dominio Get-ADComputer -Filter * -Property * | Format-Table Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion -Wrap –Auto que queremos el mismo listado para abrirlo desde un excel Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion | Export-CSV AllWindows.csv -NoTypeInformation -Encoding UTF8 Equpos que no han cambiado la password en 30 días $d = [DateTime]::Today.AddDays(-30) Get-ADComputer -Filter ‘PasswordLastSet -lt $d’ -Properties PasswordLastSet | FT Name,PasswordLastSet Usuarios que no han cambiado su contraseña en tres 180 días $d = [DateTime]::Today.AddDays(-180) Get-ADUser -Filter ‘PasswordLastSet -lt $d’ -Properties PasswordLastSet | FT Name,PasswordLastSet Usuarios que no requieren password Get-ADUser -Filter 'userAccountControl -band 32' | FT Name Otro valores que podemos utilizar en vez de 32 Active Directory userAccountControl Values: Normal Day to Day Values: =========================== 512 – Enable Account 514 – Disable account 544 – Account Enabled – Require user to change password at first logon 4096 – Workstation/server 66048 – Enabled, password never expires 66050 – Disabled, password never expires 262656 – Smart Card Logon Required 532480 – Domain controller All Other Values: =========================== 1 – script 2 – accountdisable 8 – homedir_required 16 – lockout 32 – passwd_notreqd 64 – passwd_cant_change 128 – encrypted_text_pwd_allowed 256 – temp_duplicate_account 512 – normal_account 2048 – interdomain_trust_account 4096 – workstation_trust_account 8192 – server_trust_account 65536 – dont_expire_password 131072 – mns_logon_account 262144 – smartcard_required 524288 – trusted_for_delegation 1048576 – not_delegated 2097152 – use_des_key_only 4194304 – dont_req_preauth 8388608 – password_expired 16777216 – trusted_to_auth_for_delegation === Lanzar la consola de powershell como administrador === start-process powershell -verb runas === Iniciar sesión en un equipo remoto === PowerShell está bloqueado de forma predeterminada, por lo que deberá habilitar PowerShell Remoting antes de usarlo. Previamente en el equipo **destino** deberemos de tener habilitado  la conexión remota.   Para habilitarla : Enable-PSRemoting -Force Para conectarnos al equipo lanzamos el siguiente comando desde el equipo **origen** Enter-PSSession miequipo.dominio.local -Credential USUARIO Para salir Exit-PSSession === Reinicio o apagado programado === https://www.sysadmit.com/2019/02/windows-programar-apagado-reinicio-powershell.html ==== referencias ==== * http://blogs.itpro.es/rtejero/2014/10/13/algunos-cmdlets-interesantes-de-directorio-activo-gracias-a-un-rap-as-a-service/ * http://blogs.technet.com/b/askds/archive/2010/02/04/inventorying-computers-with-ad-powershell.aspx * http://www.joseangelfernandez.es/blog/category/programacion/powershell/ * http://blogs.technet.com/b/heyscriptingguy/archive/2013/11/23/using-scheduled-tasks-and-scheduled-jobs-in-powershell.aspx# * http://blogs.itpro.es/rtejero/2014/04/02/instalar-powershell-4-0-en-nuestros-clientes-y-servidores-windows-management-framework-4-0/ * http://blogs.itpro.es/rtejero/2014/09/15/errores-de-netlogon-no_client_site-parsear-con-powershell/ * Using PowerShell to Remove Virtual Machine Snapshots in VMware ESXi 4.1 http://pipe2text.com/?page_id=1953 * https://respontodo.com/como-ejecutar-comandos-de-powershell-en-equipos-remotos/ * http://woshub.com/pswindowsupdate-module/ * http://woshub.com/using-powershell-behind-a-proxy/ * https://www.sysadmit.com/2021/11/windows-powershell-error-instalar-nuget.html * https://reparar.info/pswindowsupdate-administracion-de-actualizaciones-de-windows-desde-powershell/ * https://blog.velingeorgiev.com/install-powershell-5-nuget-sharepointpnppowershellonline-behind-proxy