如何将参数从cmd传递到powershell中的字符串数组参数
How to pass parameters from cmd to a string array parameter in powershell
我有一个 cmd 文件,它调用显示输入的 powershell 脚本。
cmd 的输入是文件名列表,它将文件名列表转发给接受字符串数组的 powershellscript。
试用时,整个文件名列表作为一个参数。
我尝试了 link and 的答案,但没有成功。
下面是我 运行 命令时的输出。
C:\Users\User1>C:\Sample.cmd "C:\file1.txt C:\file2.txt"
Processing file - C:\file1.txt C:\file2.txt
不幸的是,cmd(文件列表)的输入是从调用它的外部程序接收的。
powershell 脚本是这样的:
param
(
[Parameter(Position = 0, Mandatory = $true)]
[string[]] $sourceFiles
)
Function Sample_function
{
Param
(
[Parameter(Position = 0, Mandatory = $true)]
[string[]] $sourceFiles
)
foreach($file in $sourceFiles)
{
Write-Host "Processing file - $file"
}
}
Sample_function $sourceFiles
cmd 是这样的:
@echo off
set PS_File="C:\Sample.ps1"
powershell -FILE "%PS_File%" %*
为了使数组参数与 %*
一起使用,请使用 ValueFromRemainingArguments
设置:
param
(
[Parameter(Position = 0, Mandatory = $true, ValueFromRemainingArguments = $true)]
[string[]] $sourceFiles
)
现在 PowerShell 将正确地将所有扩展参数值绑定到 $sourceFiles
,即使它们被 space 分隔而不是 ,
我有一个 cmd 文件,它调用显示输入的 powershell 脚本。
cmd 的输入是文件名列表,它将文件名列表转发给接受字符串数组的 powershellscript。
试用时,整个文件名列表作为一个参数。
我尝试了 link
下面是我 运行 命令时的输出。
C:\Users\User1>C:\Sample.cmd "C:\file1.txt C:\file2.txt"
Processing file - C:\file1.txt C:\file2.txt
不幸的是,cmd(文件列表)的输入是从调用它的外部程序接收的。
powershell 脚本是这样的:
param
(
[Parameter(Position = 0, Mandatory = $true)]
[string[]] $sourceFiles
)
Function Sample_function
{
Param
(
[Parameter(Position = 0, Mandatory = $true)]
[string[]] $sourceFiles
)
foreach($file in $sourceFiles)
{
Write-Host "Processing file - $file"
}
}
Sample_function $sourceFiles
cmd 是这样的:
@echo off
set PS_File="C:\Sample.ps1"
powershell -FILE "%PS_File%" %*
为了使数组参数与 %*
一起使用,请使用 ValueFromRemainingArguments
设置:
param
(
[Parameter(Position = 0, Mandatory = $true, ValueFromRemainingArguments = $true)]
[string[]] $sourceFiles
)
现在 PowerShell 将正确地将所有扩展参数值绑定到 $sourceFiles
,即使它们被 space 分隔而不是 ,