2011-01-14 17 views

Respuesta

66

Utilice el panel de comandos. Abra el archivo de script en el editor ISE, configure los puntos de interrupción (F9). Luego, en el panel de comandos, escriba un comando que invoque este script con los parámetros requeridos. No creo que haya otra forma (integrada) de hacer esto en ISE.

+4

Este enfoque no me funcionaba porque mi ruta de archivos tenía espacios, la solución era usar la "función y comercial" de la siguiente manera: PS C: \ Windows> & ("c: \ mi carpeta \ script .ps1 ") -myArg 123 -otroArg abc –

+0

Puede usar la ruta relativa:. \ script.ps1 –

16
  1. Abra el script (MyScript.ps1) en Windows PowerShell ISE
  2. Presione F9 en la variable que desea inspeccionar (depuración). Por ejemplo, segunda línea en el ejemplo siguiente donde se asigna la variable $ outputText
  3. En la ventana del shell, proporcione la ruta relativa de la secuencia de comandos junto con el valor param. Por ejemplo:. \ MyScript.ps1 "mi valor"
  4. pulsa enter (usted no tenga que pulsar F5 )
  5. Usted será capaz de ver los puntos de interrupción de depuración en relieve con el color amarillo. Coloque el cursor sobre la variable deseada para inspeccionar el valor actual.

A sample showing PowerShell debugging with ISE and command parameter

+0

¿En qué se diferencia esta respuesta de la aceptada? – eckes

+1

Pensamiento explicando más detalles con la ilustración será útil para los demás. Por ejemplo, se requiere proporcionar la ubicación relativa (o absoluta), que no se proporcionó en primer lugar. –

13

Hay otra manera. Puede usar la variable automática $PSDefaultParameterValues, que existe (desde v3) para proporcionar nuevos argumentos predeterminados a cmdlets y funciones avanzadas (no funciona con las funciones normales). Sin embargo, funciona para scripts, incluso cuando se depura en ISE.

Así, por tu ejemplo,

param ($G_ARCHIVE = $(throw "Need file to upload!"), 
$G_LOGFILE = $(throw "Need logfile!")) 

tienes que ejecutar algo como esto en el símbolo del ISE:

$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt") 
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log") 

También podría establecer el valor del parámetro a un bloque de script que se auto-ejecutar en tiempo de ejecución:

$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={ 
    "Example-{0:yyMMddHHmm}.log" -f [datetime]::Now 
} 

La variable es una tabla hash y toda la sintaxis estándar appl ies, excepto la clave debe tener el nombre del script (o función avanzada o cmdlet) seguido de dos puntos y luego el nombre del parámetro. Puede establecer valores predeterminados para múltiples scripts o comandos, y múltiples parámetros para cada uno (cada parámetro es una nueva entrada de tabla).

Al hacerlo de esta manera, puede simplemente presionar F5 para ejecutar su secuencia de comandos como es normal. Los parámetros se tomarán de la variable, por lo que no tiene que escribir nada.

Otros casos de uso para $PSDefaultParameterValues pueden ser personalizaciones, como que el Get-History solo obtenga las últimas 10 entradas, a menos que especifique el -Count parámetro en el comando. Debido a que las entradas solo persisten para la sesión actual, le recomendamos agregar personalizaciones a su profile.Puede leer más escribiendo Get-Help about_Parameters_Default_Values en el indicador o ver la misma información en TechNet.

+0

Otro ejemplo de bloque de script. Puede hacer que su script use automáticamente el archivo zip más nuevo. '$ PsDefaultParameterValues ​​= [" ExampleScript.ps1: G_ARCHIVE "] = {(ls * .zip | ordenar lastwritetime | select -last 1) .fullname}' Este tipo de cosas es súper útil cuando creas constantemente nuevas versiones de algunos archivos externos conjunto de datos para probar y depurar su secuencia de comandos con. – PatrickFranchise

+0

$ PSDefaultParameterValues.Item ("KEY") = "VALOR" es otra alternativa – RichardOD

-1

Hay una manera mucho más simple para establecer los parámetros necesarios en ISE:

Antes de pulsar F5 en ISE, establece el parámetro que necesita. Por lo general comento el parámetro que necesito, ejemplo: # $ G_ARCHIVE = "C: \ Temp \ TestFile_001.txt"

selecciono todo después de "#" y presione F8 . La próxima vez que depure la secuencia de comandos con F5, el parámetro se establece en el valor que estoy probando, no es necesario pasar los parámetros a través de la línea de comandos.

+0

P.S. Funciona solo para parámetros no obligatorios –

Cuestiones relacionadas