How to pass needed parameters to script in Powershell ISE?

后端 未结 4 428
别跟我提以往
别跟我提以往 2021-02-03 16:41

See Title.

I specified needed parameters in the head of a script:

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


        
4条回答
  •  你的背包
    2021-02-03 17:28

    There is another way. You can use the $PSDefaultParameterValues automatic variable, which exists (since v3) to provide new default arguments to cmdlets and advanced functions (doesn't work with normal functions). However, it does work for scripts, even when debugging in ISE. You have to declare [CmdletBinding()] or [Parameter()] like you would for an advanced function.

    So for your example,

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

    you would execute something like this on the ISE Prompt:

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

    You could also set the parameter value to a script block which will auto-execute at run-time:

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

    The variable is a hashtable and all the standard syntax applies, except the key must have the name of the script (or advanced function or cmdlet) followed by a colon then the parameter name. You can set defaults for multiple scripts or commands, and multiple parameters for each (each parameter is a new table entry).

    By doing it this way, you can just hit F5 to run your script like normal. The parameters will be taken from the variable, so you don't have to type anything in.

    Other use cases for $PSDefaultParameterValues might be customizations, like have the Get-History get only the last 10 entries, unless you specify the -Count parameter in the command. Because entries only persist for the current session, you would want to add customizations to your profile. You can read more by typing Get-Help about_Parameters_Default_Values at the prompt or view the same information on TechNet.

提交回复
热议问题