¿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 (jakob@bindslet.dk) 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.
0 Comments