jueves, 18 de mayo de 2017

La ayuda de PowerShell


Es interesante conocer qué tipo de ayuda ofrece PowerShell para darnos cuenta de cómo debemos implementarla en nuestros comandos. vamos a ver unos ejemplos a través del commando Get-Help.

Cómo usar la ayuda de un comando

Podemos obtener ayuda de un comando de varias formas. Vamos a usar el comando Get-Help como ejemplo para ver las diferentes opciones de ayuda disponibles. EL comando Get-Help obtiene ayuda de un comando y, sí, es posible obtener ayuda de Get-Help de las siguientes maneras:
Get-Help Get-Help
Get-Help –?
ambos comandos provocan como salida:
NOMBRE
    Get-Help
SINTAXIS
    Get-Help [[-Name] <string>]  [...] [<CommonParameters>]
[...]
ALIAS
    Ninguno

NOTAS
    Get-Help no encuentra los archivos de Ayuda para este cmdlet en el equipo. Mostrará solo una parte de la Ayuda.
        -- Para descargar e instalar los archivos de Ayuda para el módulo que incluye este cmdlet, use Update-Help.
        -- Para ver en línea el tema de Ayuda de este cmdlet, escriba "Get-Help Get-Help -Online" o
           vaya a http://go.microsoft.com/fwlink/?LinkID=113316.

El propio comando posiblemente nos indique en las notas que no encuentra la ayuda y debemos descargarla o bien consultarla online.
Es interesante leer la opción –online. Muchos de los comandos tienen su ayuda documentada en Internet y es posible acceder a ella a través del comando Get-Help [commando] –online.
En este caso nos abrirá en el navegador el siguiente enlace:
En realidad el comando apenas nos ha dado información. Esto es porque cada módulo tiene un fichero XML asociado con la documentación de cada uno de los comandos. Es por ello conveniente descargar la documentación. podemos hacerlo usando el comando Update-Help. Una vez actualizada podemos repetir el comando. Veremos que tiene más información y con más sentido que lo anterior. Esto es una parte resumida del contenido mostrado:
PS C:\WINDOWS\system32> get-help get-Help
NOMBRE
    Get-Help
SINOPSIS
    Displays information about Windows PowerShell commands and concepts.

SINTAXIS
    Get-Help [[-Name] <String>] [-Category {Alias | Cmdlet | Provider | General | FAQ | Glossary | HelpFile | ScriptCommand | Function | Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource | Class | Configuration}] [-Component <String[]>] -Detailed
    [-Functionality <String[]>] [-Path <String>] [-Role <String[]>] [<CommonParameters>]

DESCRIPCIÓN
    The Get-Help cmdlet displays information about Windows PowerShell concepts and commands, including cmdlets, functions, CIM commands, workflows, providers, aliases and scripts.
    To get help for a Windows PowerShell command, type `Get-Help` followed by the command name, such as: `Get-Help Get-Process`. To get a list of all help topics on your system, type `Get-Help *`. You can display the whole help topic or use the parameters of the
    Get-Help cmdlet to get selected parts of the topic, such as the syntax, parameters, or examples.

VÍNCULOS RELACIONADOS
    Online Version: http://go.microsoft.com/fwlink/?LinkId=821483
    Updatable Help Status Table (http://go.microsoft.com/fwlink/?LinkID=270007) http://go.microsoft.com/fwlink/?LinkID=270007
    about_Command_Syntax
    Get-Command
NOTAS
    Para ver los ejemplos, escriba: "get-help Get-Help -examples".
    Para obtener más información, escriba: "get-help Get-Help -detailed".
    Para obtener información técnica, escriba: "get-help Get-Help -full".
    Para obtener ayuda disponible en línea, escriba: "get-help Get-Help -online"
Como se puede ver muestra varias secciones:
  • Nombre
  • Sinopsis
  • Sintaxis
  • Descripción
  • Vínculos relacionados
  • Notas
Además el propio comando nos indica que hay más contenido que mostrar si indicamos opciones como –Detailed,
–Full o –examples, que veremos en la siguiente sección.

Opciones de ayuda

Veamos qué más podemos exprimir de la ayuda. Si consultamos el enlace de la ayuda online de Get-Help podemos ver que hay varias formas de obtener ayuda de un comando a través de los siguientes parámetros:
  • -ShowWindow
  • -Online
  • -Detailed y –Full
  • -Parameter
  • -Examples
El parámetro  -ShowWindow quizá sea poco utilizado pero es uno de mis preferidos. Permite mostrar la ayuda en una ventana aparte. Por ejemplo, si queremos la ayuda del comando “Get-Module” con el parámetro showWindow de la siguiente manera: 

PS C:\WINDOWS\system32> get-help get-module –ShowWindow
se abrirá una ventana como esta:
El contenido de la ventana es equivalente a poner el parámetro –Full pero en lugar de usar la salida estándar de PowerShell se usa una ventana al estilo Windows. Esta ventana no solo nos permite buscar dentro del contenido sino que además podemos hacer zoom, copiar contenido o modificar las opciones de salida en la ventana a través del botón Configuración. Y sobre todo hay que contemplar que esta opción nos permite seguir trabajando en nuestra sesión de PowerShell sin necesidad de llenar el búfer de línea de comandos con la información de la ayuda.
Es interesante leer la opción –online. Muchos de los comandos tienen su ayuda documentada en Internet y es posible acceder a ella a través del comando Get-Help [commando] –online.
En este caso nos abrirá en el navegador el siguiente enlace:
El parámetro –Detailed proporciona, además del contenido anterior, el siguiente contenido:

  • Parámetros: la lista de parámetros.
  • Notas: Si el comando contiene notas éstas aparecerán en esta sección. Ejemplos: Si el comando contiene ejemplos aparecerán en esta sección de forma enumerada.
    El comando del ejemplo siguiente proporciona la salida con el parámetro –Detailed:
    C:\> get-help get-module -Detailed
    NOMBRE
        Get-Module
    SINTAXIS
        Get-Module [[-Name] <string[]>]  [<CommonParameters>]
       
    PARÁMETROS
        -All
        -CimNamespace <string>
        -CimResourceUri <uri>
        -CimSession <CimSession>
        -FullyQualifiedName <ModuleSpecification[]>
        -ListAvailable
        -Name <string[]>
        -PSEdition <string>
        -PSSession <PSSession>
        -Refresh
        <CommonParameters>
            Este cmdlet admite los parámetros comunes Verbose, Debug,
            ErrorAction, ErrorVariable, WarningAction, WarningVariable,
            OutBuffer, PipelineVariable y OutVariable. Para obtener más información, consulte
            about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).

    ALIAS
        gmo

    NOTAS
        Get-Help no encuentra los archivos de Ayuda para este cmdlet en el equipo. Mostrará solo una parte de la Ayuda.
            -- Para descargar e instalar los archivos de Ayuda para el módulo que incluye este cmdlet, use Update-Help.
            -- Para ver en línea el tema de Ayuda de este cmdlet, escriba "Get-Help Get-Module -Online" o
               vaya a http://go.microsoft.com/fwlink/?LinkID=141552.
    La opción –Parameter seguida de un nombre de parámetro nos proporciona la información detallada de dicho parámetro. Por ejemplo, el comando get-help get-module -Parameter name tiene la siguiente salida:
    C:\> get-help get-module -Parameter name
    -Name <string[]>
        ¿Requerido?                  false
        ¿Posición?                   0
        ¿Aceptar canalización?       true (ByValue)
        Nombre de conjunto de parámetros           Loaded, Available, PsSession, CimSession
        Alias                      Ninguno
        ¿Dinámico?                     false
    Me he saltado la opción –Full a propósito. La diferencia entre –detailed y –full es que la opción full muestra cada parámetro como si se hubiese especificado el parámetro parameter para cada uno de ellos. Por tanto, especificando la opción –full  tendremos para cada parámetro su detalle (requerido, posición, canalización, etc.).
  • martes, 17 de diciembre de 2013

    AppBlock.Config

    Permite manejar de forma fácil y sencilla las configuraciones de una aplicación. Sirve tanto para aplicaciones Web como para aplicaciones de escritorio. Entre las funcionalidades destacadas están:

    • División en múltiples ficheros de configuración sin necesidad del atributo “ConfigSource
    • Jerarquización de ficheros de configuración
    • Carga de ficheros de configuración basada en Entorno
    • Encriptar/desencriptar bloques de configuración de forma sencilla

    Podéis encontrarlo en AppBlockConfig.codeplex.com, bajo el paradigma de Appblocks: http://AppBlocks.Codeplex.com

    Uso de AppBlock.Config

    La utilización de este módulo es muy sencilla. Basta con llamar al método de carga de configuraciones al inicio de una aplicación (bien en el global.asax o en en el constructor de applicación para aplicaciones de escritorio.

    ConfigManager.LoadConfigurations();image

    Si queremos especificar que cargue ficheros de configuración de niveles superiores en la jerarquía de carpetas de la aplicación basta con indicarle el número de niveles de directorio padre:


    ConfigManager.LoadConfigurations(1);


    Este módulo permite además definir configuraciones específicas basadas en el nombre de la máquina donde se ejecuta, lo que facilita cargar configuraciones específicas en función del entorno donde se ejecuta.image


    Ejemplo: tenemos tres entornos, C1,C2 y C3. Basta con declarar dentro de nuestras aplicaciones una carpeta ‘Config’ que contenga una carpeta por entorno o configuración específica. Una vez creados los ficheros hay que indicar en las propiedades de los ficheros que se copien al directorio de salida de la aplicación al compilar:


    image


    Al ejecutar la aplicación en invocar a LoadConfigurations() se cargarán las configuraciones comunes y se complementarán con las configuraciones específicas del entorno. Esto permite tener organizadas las configuraciones separando la parte común de las específicas (sin necesidad de recurrir a transformaciones en ficheros xml).


    Además, supongamos que queremos cargar la configuración de un entorno concreto, para probar las configuraciones de ese entorno o reproducir un error. Es tan sencillo como especificar el nivel desde donde se cargarán los ficheros de configuración (cero si es el raíz de la aplicación) y el nombre del entorno:


    ConfigManager.LoadConfigurations(0, “C3”);


    ConfigHelper


    Este módulo contiene un helper que facilita las tareas de obtención de configuraciones de la sección Appsettings y devolver valores por defecto (en lugar de lanzar una excepción). Esto mejora la resistencia a fallos en nuestra aplicación.


    AppBlocks.ConfigHelper.GetAppSetting<int>(“CounterValue”);

    Este método devuelve 0 si no existe la clave.


    AppBlocks.ConfigHelper.GetAppSetting<int>(“CounterValue”, 1);


    Este método devuelve 1 si no existe la clave.


    AppBlocks.ConfigHelper.GetAppSetting(“StringKey”);


    Este método devuelve el valor de la cadena. Si no existe devuelve


    Próximamente



    • Extender el helper para leer secciones concretas

    • Extender la funcionalidad para simplificar el uso de varias cadenas de conexión.

    • Crear una ‘manejador’ que permita consultar las configuraciones actuales y modificarlas.

    • Encriptación desencriptación de secciones.

    lunes, 9 de septiembre de 2013

    Screen Manager

    Aunque no es común trabajar en proyectos que requieran de múltiples pantallas, en aquellos que lo necesitan es bastante complicado trabajar con la gestión de los diferentes dispositivos de salida visuales.
    Os traigo un módulo que permite gestionar el uso de ventanas y monitores dentro de una librería y a través de configuración, permitiendo centrar el desarrollo en las vistas, pudiendo presentar las vistas de nuestra aplicación en cualquier región definida previamente.

    domingo, 8 de julio de 2012

    Principios de diseño en POO

     
    Cuando nos encontramos con un equipo que no está familiarizado con patrones de arquitectura, principios de diseño y arquitecturas empresariales es bastante complicado instruir a cada miembro en las costumbres y principios de diseño para cualquier desarrollo de software de un tamaño considerable. Pues bien, aunque en este artículo no me dé tiempo ni de lejos a explicar los principales principios de diseño, os dejo una lista muy práctica para imprimirla en una hoja y colocarla en un sitio visible para no perder de vista ningún principio a la hora de hacer un desarrollo.
    Os dejo un enlace de un documento PDF que tiene el contenido de este artículo resumido en una sola página. Yo suelo entregar a cada desarrollador que viene nuevo al equipo una copia para que la tenga presente.

    jueves, 7 de abril de 2011

    ¿Referencias a proyectos o a ensamblados?

    Uno de los pilares para el día a día del desarrollo con .NET es una correcta estructuración de la solución o soluciones con las que trabajamos. Una de las partes fundamentales de esta estructuración es organizar las referencias a ensamblados de terceros, ensamblados de los que poseemos el código fuente, proyectos de la solución,...

    La diferencia entre organizar correctamente una solución y no tener en cuenta esta estructuración marca la diferencia entre que el desarrollo sea una tarea simple y rutinaria o que consiga minar nuestra paciencia.

    A continuación mencionaré una serie de pautas generales a tener en cuenta para el desarrollo, ventajas e inconvenientes de cada una de ellas y escenarios en los que estas recomendaciones pueden servir.
     

    lunes, 10 de enero de 2011

    Estilos para diferentes navegadores

    Uno de los mejores dolores de cabeza lo suelen dar los diseños de estilo para los diferentes navegadores. Lo ideal es conseguir un diseño homogéneo válido para todos los navegadores, pero esto no siempre es posible. Para facilitarnos la vida aquí tenéis una buena solución para aplicar un estilo a cada diferente navegador:

    sábado, 21 de agosto de 2010

    Software .NET

    Hace un par de días, he tenido que investigar sobre dos tipos de herramientas:

    • ESB(Enterprise service bus), bus de servicios de empresa consiste en un combinado de arquitectura de software que proporciona servicios fundamentales para arquitecturas complejas a través de un sistema de mensajes basado en las normas y que responde a eventos. Generalmente un ESB proporciona una capa de abstración construida sobre una implementación de un sistema de mensajes de empresa que permita a los expertos en integración explotar el valor del envío de mensajes sin tener que escribir código. El ESB que he estudiado es el NServiceBus(http://www.nservicebus.com/) el cual esta totalmente desarrollado en .NET y es opensource.


    • BPM(Gestor de Procesos de Negocio), he encontrado el siguiente software de pago Ultimus(http://www.ultimus.com) basado en tecnología .NET.

    sábado, 3 de julio de 2010

    WCF e Inyección de dependencias (WCF & DI)

    La pregunta es ¿Puedo usar Inyección de dependencias
    con WCF?

    La respuesta es .

    ¿Necesito Unity spring, etc, etc para esto? Pues la verdad es que NO.

    ¿Y esto como se come? Sencillo. WCF está basado en interfaces. Para definir el contrato de datos y el contrato de servicio, definimos una interfaz que implementa ambos (curiosamente igual que cualquier patrón de DI - Inyección de dependencias).

    ¿Y esto para qué sirve?
    Pues resulta muy útil cuando quieres trabajar con objetos diferentes en dos módulos conectados a través de WCF. Los objetos (o más bien el contrato de datos) pueden ser diferentes siempre y cuando cumplan la interfaz definida para el servicio WCF.

    Diferentes técnicas de AJAX con ASP.NET

    Vamos a dar un repaso a todas las posibilidades AJAX que podemos implementar en nuestras páginas Web con las herramientas que proporciona Microsoft para ASP.NET y repasaremos sus ventajas e inconvenientes.
    Cualquiera de los métodos que utilizan AJAX en ASP.NET requieren el uso del control ScriptManager. Este control debe ser configurado de una forma determinada dependiendo de cómo implementemos AJAX.

    Etiquetas