Filosofa UNIX/Linux
Escribir programas que hagan una sola cosa pero que lo hagan bien
Escribir programas que trabajen en conjunto
Escribir programas para manejar "text streams", porque es la interfaz universal
-
Prctico y basado en la experiencia
No se espera que este basado en mtodos oficiales o estndares pero si en la habilidad
que la cultura Unix transmite
Bottom Up y no Top Down
Minimalista: Menos es Mas
Frases Celebres
La salida de un programa es la entrada de otro programa
No dudar en rehacer de nuevo secciones de cdigo y reconstruir todo de nuevo
Unix es bsicamente un sistema operativo simple, pero tienes que ser un genio para
entender su sencillez (simplicidad)
Aquellos que no entienden UNIX estn condenados a reinventarlo pobremente
Conclusin:
UNIX y C el fundamento de TODO
Qu es PowerShell?
Windows PowerShell es un nuevo shell de lnea de comandos de Windows que se
ha diseado expresamente para los administradores de sistemas
Windows PowerShell tiene 2 diferencias fundamentales:
No procesa texto, sino objetos de la plataforma .NET.
Ofrece comandos integrados que permiten seguir utilizando las herramientas
tradicionales de Windows, como ipconfig, route, netstat, etc.
Primeros pasos
Comandos:
Los comandos ejecutan una sola funcin y son conocidos como commandlets o
cmdlets
Los cmdlets siguen el patrn: verbosustantivo
Verbos usados: get, set, write, start, stop, remove, add, etc
get (recuperar datos), set (establecer o fijar datos)
Ejemplos de cmdlets: gethelp, getservice, getprocess
Los cmdlets tienen Alias con nombres de comandos de UNIX y CMD, adems de
tener alias reducidos (abreviacin del cmdlet)
Formato:
[cmdlet]
[cmdlet] [parametro]
[cmdlet] [parametro] [parametro] [argumento]
[cmdlet] [parametro] [parametro] [argumento1], [argumento2]
Parmetro: variable que puede ser aceptado por un comando
Argumento: valor asignado aun parmetro
Cmdlets bsicos:
GetHelp
GetCommand
GetHelp [cmdlet]
Gethelp [cmdlet] detailed
GetAlias
GetChilditem
Clsicos:
CMDLET
Alias
GetChilditem
GetLocation
SetLocation
dir
pwd
cd
Administracin:
GetService
GetProcess
Stopprocess
Salida standard:
Writehost
Salida a un archivo:
Gethelp > salida.txt
Poltica de ejecucin:
GetExecutionPolicy
SetExecutionPolicy
Mas ejemplos...
GetHelp GetService examples
GetHelp GetService parameter name
Pipes
GetProcess | GetMember
GetProcess | more
GetProcess | SortObject
Mas ejemplos
Ordenar procesos por Nombre de Proceso
GetProcess | SortBbject ProcessName
Ordenar procesos por Nombre de Proceso en orden ascedente
GetProcess | SortBbject ProcessName descending
Formateo de Salida
FormatList
FormatTable
SelectObject
Formatea la salida, en la cual cada propiedad aparece lnea por lnea
Formatea la salida como tabla
Selecciona un propiedad especifica de un objeto o objetos
Ej.
GetCommand | Formattable Name, CommandType
GetCommand | Formatlist Name, CommandType
GetCommand | SelectObject Name, CommandType
GetProcess | FormatTable id, name, path autosize
Expresiones:
35 * 7
(200/6.9)
Variables:
Variables en Powershell tienen el prefijo $
Ej.
$ps = GetProcess
$ps
$ps[0]
$CambioDolar = 35*6.97
$CambioDolar
Variables Predefinidas:
SetLocation variable:
GetChildItem
Variables especiales:
$Error
$_
Contiene el mensaje de error en la sesin actual
Contiene el objeto actual dentro de un pipe
Ej.
GetService | whereobject {$_.name eq tlntsvr}
SetLocation c:\noexiste
$Error
Uso de propiedades y mtodos
GetMember
Obtiene informacin de objetos y coleccin de objetos
GetService | GetMember
(GetService tlntsvr).DisplayName
(GetService tlntsvr).get_status( )
$wincmd = GetProcess | whereobject {$_.name match wincmd}
$wincmd.id
$wincmd.kill( )
$ps = GetProcess; $ps[$ps.count1]; $ps[$ps.count1].kill( )
GetService | ForEachObject {writehost $_.DisplayName, " : ", $_.get_status()}
GetProcess | WhereObject {$_.name match "wincmd"} | ForEachObject {$_.kill()}
Comparaciones
lt
<
le
<=
gt
>
ge
>=
eq
Equal to
ne
!=
like
notlike
match
Ej.
GetProcess | WhereObject {$_.name like "s*"}
GetProcess | WhereObject {$_.name match "explorer"}
GetProcess | WhereObject {$_.name match "^s"}
GetProcess | WhereObject {$_.name match "m$"}
GetProcess | WhereObject {$_.cpu gt 40}
Procesando Archivos
Leer/Agregar contenido a archivo de texto:
GetContent C:\boot.ini
$archivo = GetContent
$archivo[0]
C:\boot.ini
GetContent C:\boot.ini | MeasureObject line word character
Agregar Contenido a Archivo de Texto:
AddContent c:\ejemplo.txt value Hola
Archivos & Directorios
Crear Archivos & Directorios:
NewItem path . name test1.txt type file
NewItem path c:\testdir type directory
Nota: mkdir tambien crea directorios
Copiar/Mover/Remover:
CopyItem path c:\test recurse c:\nuevo
MoveItem path c:\test recurse
RemoveItem c:\test recurse
Listar Recursivamente:
GetChildItem c:\test\ recurse
Mostrar todos los archivos (incluyendo archivos ocultos):
GetChildItem force | FormatTable name, attributes, mode
Agrupar Elementos:
GetCommand CommandType all | groupobject CommandType
Exportar la salida a un archivo
GetProcess | outfile c:\borrame.txt
GetProcess | ExportCsv c:\borrame.csv
GetProcess | ExportClixml c:\borrame.xml
GetProcess | ConvertToHtml > c:\test\test.html
GetService | ConvertTohtml Property Name, Status > c:\test\algo.htm
Procesos/Servicios
StopProcess [ID]
StartService name [nombre servicio]
E.g.
StartService name tlntsvr
Registro de Windows
Acceder al registro:
SetLocation Registry::
GetChildItem
Acceder a una localizacin especifica del registro:
SetLocation HKLM:\software\microsoft\windows\CurrentVersion
Listar Claves:
SetLocation HKLM:\software\microsoft\windows\CurrentVersion
GetChildItem
Listar Valor:
SetLocation HKLM:\software\microsoft\windows\CurrentVersion\run
GetItemProperty .
SetLocation HKLM:\software\microsoft\windows\CurrentVersion\
GetItemProperty Run
Agregar Valor:
SetLocation HKLM:\software\microsoft\windows\CurrentVersion\
SetItemProperty path . name "PSInfo" type "string" value "Agregado desde
PowerShell"
Renombrar Valor:
SetLocation HKLM:\software\microsoft\windows\CurrentVersion\
RenameItemProperty path . name PSInfo newname "PowerShell"
GetItemProperty .
Modificar Valor:
SetItemProperty path . name "PSInfo" type "string" value "Agregado desde
PowerShell"
SetItemProperty path . name "PSInfo" type "string" value "Nuevo Valor"
Borrar Clave:
RemoveItemProperty path HKLM:\software\microsoft\windows\CurrentVersion\Run
name PowerShell
Log del Sistema
Listar logs:
GetEventLog list
Listar contenido:
GetEventLog system