通过命令行将variables传递给PowerShell脚本

我是新来的powershell,并试图教自己的基本知识。 我需要编写一个ps脚本来parsing文件,这并不是太困难。

现在我想改变它来传递一个variables给脚本。 该variables将是parsingstring。 现在,variables总是1个字,而不是一组字或多个字。

这看起来很简单,但对我来说是一个问题。 这是我的简单代码:

$a = Read-Host Write-Host $a 

当我从命令行运行脚本时,variables传递不起作用:

 .\test.ps1 hello .\test.ps1 "hello" .\test.ps1 -a "hello" .\test.ps1 -a hello .\test.ps1 -File "hello" 

正如你所看到的,我已经尝试了很多没有成功的方法,剧本将价值输出。

该脚本确实运行,并等待我input一个值,当我这样做,它的价值回声。

我只是想要它输出我传入的值,我错过了什么微乎其微的东西?

谢谢。

下面是关于Powershell params的一个很好的教程:

PowerShell ABC的 – P是参数

基本上,你应该在脚本的第一行使用一个param语句

param([type]$p1 = , [type]$p2 = , ...)

或者使用$ args内置variables,这个variables会自动填充所有的参数。

在你的test.ps1中,在第一行

 param( [string]$a ) Write-Host $a 

那么你可以打电话给它

 ./Test.ps1 "Here is your text" 

在这里find

在test.ps1中声明参数:

  Param( [Parameter(Mandatory=$True,Position=1)] [string]$input_dir, [Parameter(Mandatory=$True)] [string]$output_dir, [switch]$force = $false ) 

从运行或Windows任务计划程序运行脚本:

 powershell.exe -command "& C:\FTP_DATA\test.ps1 -input_dir C:\FTP_DATA\IN -output_dir C:\FTP_DATA\OUT" 

要么,

  powershell.exe -command "& 'C:\FTP DATA\test.ps1' -input_dir 'C:\FTP DATA\IN' -output_dir 'C:\FTP DATA\OUT'"