meta data de esta página

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

referencias