Los Comandos mas Útiles en PowerShell – I

Escrito por Saul Da Silva

17/02/2018

¿Como determinar mi versión de PowerShell?

host

 

¿Como hacer una pausa en un script?

Start-Sleep -Seconds 300 # Pausa de 5 minutos

Obtener la hora desde el ultimo inicio del computador

(Get-CimInstance -ClassName win32_operatingsystem).LastBootUpTime

Mostrar todos los programas que se cargan en el inicio de Windows

Get-WmiObject -Class Win32_StartupCommand | Sort-Object -Property Caption | Format-Table -Property Caption, Command, User -AutoSize

Como editar las políticas de ejecución de PowerShell

# Restricted - No se pueden ejecutar Scripts - PowerShell solo puede ser usado en modo interactivo.
Set-ExecutionPolicy -ExecutionPolicy Restricted

# AllSigned - Solo scripts firmados pueden ser ejecutados.
Set-ExecutionPolicy -ExecutionPolicy AllSigned

# RemoteSigned - Scritps descargados deben ser firmados por entidad certificada.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

# Unrestricted - Sin Restricciones - Todos los scripts pueden ejecutarse sin restricciones.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted

Crear accesos directos con Powershell

Vamos a crear un acceso directo al Notepad en el Escritorio de nuestro PC

$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.Createshortcut("$HOME\Desktop\Notepad.lnk")
$shortcut.TargetPath = 'c:\windows\notepad.exe'
$shortcut.Save()

Abrir el Explorador de Windows (Existen diversos métodos)

[Diagnostics.Process]::Start('explorer.exe')
Invoke-Item -Path C:\Windows\explorer.exe
ii c:\windows #Puedes indicar la ruta que quieres mostrar

Obtener la ruta del directorio temporal del usuario actual

[System.IO.Path]::GetTempPath()

Como montar un archivo ISO

Mount-DiskImage 'D:\ISO\file.iso' # ISO

Como cambiar el directorio actual a uno especifico

Set-Location -Path 'C:\nuevodirectorio'

Como limpiar la consola

Clear-Host
# Y también podemos usar un alias "cls"
cls

¿Como conocer la clave de Producto de Windows en PowerShell?

Debes utilizar PowerShell ISE introducir esta función

function Get-WindowsKey 
{
    ## function to retrieve the Windows Product Key from any PC
    ## by Jakob Bindslet ([email protected])
    param ($targets = '.')
    $hklm = 2147483650
    $regPath = 'Software\Microsoft\Windows NT\CurrentVersion'
    $regValue = 'DigitalProductId'
    Foreach ($target in $targets) 
    {
        $productKey = $null
        $win32os = $null
        $wmi = [WMIClass]"\\$target\root\default:stdRegProv"
        $data = $wmi.GetBinaryValue($hklm,$regPath,$regValue)
        $binArray = ($data.uValue)[52..66]
        $charsArray = 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9'
        ## decrypt base24 encoded binary data
        For ($i = 24; $i -ge 0; $i--) 
        {
            $k = 0
            For ($j = 14; $j -ge 0; $j--) 
            {
                $k = $k * 256 -bxor $binArray[$j]
                $binArray[$j] = [math]::truncate($k / 24)
                $k = $k % 24
            }
            $productKey = $charsArray[$k] + $productKey
            If (($i % 5 -eq 0) -and ($i -ne 0)) 
            {
                $productKey = '-' + $productKey
            }
        }
        $win32os = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $target
        $obj = New-Object -TypeName Object
        $obj | Add-Member -MemberType Noteproperty -Name Computer -Value $target
        $obj | Add-Member -MemberType Noteproperty -Name Caption -Value $win32os.Caption
        $obj | Add-Member -MemberType Noteproperty -Name CSDVersion -Value $win32os.CSDVersion
        $obj | Add-Member -MemberType Noteproperty -Name OSArch -Value $win32os.OSArchitecture
        $obj | Add-Member -MemberType Noteproperty -Name BuildNumber -Value $win32os.BuildNumber
        $obj | Add-Member -MemberType Noteproperty -Name RegisteredTo -Value $win32os.RegisteredUser
        $obj | Add-Member -MemberType Noteproperty -Name ProductID -Value $win32os.SerialNumber
        $obj | Add-Member -MemberType Noteproperty -Name ProductKey -Value $productKey
        $obj
    }
}

Y dentro del mismo Script debes llamar la función

Get-WindowsKey

Comprobar el espacio en disco de las unidades

Get-WmiObject -Class Win32_logicaldisk | Format-Table -Property @{
    Name       = 'Unidad'
    Expression = {$_.DeviceID}
}, @{
    Name       = 'Tamaño Total (GB)'
    Expression = {[decimal]('{0:N0}' -f($_.Size/1gb))}
}, @{
    Name       = 'Disponible (GB)'
    Expression = {[decimal]('{0:N0}'-f($_.Freespace/1gb))}
}, @{
    Name       = 'Disponible (%)'
    Expression = {'{0,6:P0}' -f(($_.Freespace/1gb) / ($_.size/1gb))}
} -AutoSize

¿Como abrir un archivo en PowerShell?

Invoke-Item -Path 'C:\ruta\file.txt'
# Como método adicional puedes usar
.'C:\ruta\file.txt'

Encontrar todos los ficheros con determinado tamaño

# Archivos mayores a 1 GB
Get-ChildItem -Path C:\ -Recurse -ErrorVariable $errorsSearch | Where-Object -FilterScript {$_.Length -gt 1GB}

# Archivos inferiores a 1 GB
Get-ChildItem -Path C:\ -Recurse -ErrorVariable $errorsSearch | Where-Object -FilterScript {$_.Length -lt 1GB}

Como obtener el valor Hash de un archivo y los valores MD5 – SHA1

$file = 'C:\Windows\notepad.exe'
(Get-FileHash $file).Hash
Get-FileHash $file -Algorithm MD5
Get-FileHash $file -Algorithm SHA1

Crear un fichero nuevo con PowerShell

New-Item -ItemType File -Path 'C:\ruta\file.txt' -Value 'FirstLine'

Cambiar el nombre de un fichero en PowerShell

Rename-Item -Path 'C:\ruta\fichero.txt' -NewName 'C:\ruta\nuevonombre.txt'

Eliminar fichero con PowerShell

Remove-Item -Path 'C:\ruta\file.txt'

Como probar si un fichero en especifico existe

Test-Path -Path 'C:\Windows\notepad.exe' # Muestra True o False

Como obtener el archivo mas reciente/antiguo en una carpeta

Get-ChildItem | Sort-Object -Property CreationTime | Select-Object -Last 1 # Mas reciente
Get-ChildItem | Sort-Object -Property CreationTime | Select-Object -First 1 # Mas antiguo

Descargar ficheros con PowerShell

Invoke-WebRequest -Uri 'http://sitioweb.net/file.zip' -OutFile 'C:\ruta\file.zip

Copiar ficheros con PowerShell

Copy-Item -Path 'C:\ruta\file.txt' -Destination 'C:\destino'

Como obtener la fecha actual del sistema

Get-Date

Y en nuestra próxima publicación vamos a enseñarte mas comandos utiles en PowerShell recuerda que todos estos comandos aparte de utilizarlos directamente en la consola te sirven para crear tus scripts.

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *