首页 > 解决方案 > 使用参数从 CMD 调用 Powershell 脚本函数

问题描述

也许我需要一双新的眼睛:

我在.bat文件中使用以下代码来调用接受2个参数的Powershell脚本。我想在Powershell脚本的函数中传递相同的参数。问题是我无法分离里面的2个参数函数。这是 .bat 文件中的代码:

@ECHO OFf
Set OUTFILE="C:\users\XXX\desktop\newchangepass\log.txt"

echo user='%1' pass='%2' >> %OUTFILE%

echo %1 %2

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -File "C:\ps\CallMeWithParams.ps1" %1 %2 

这就是我给命令行的内容:

c:\PS>CallMeWithParams.bat Alpha Beta

这是Powershell脚本中的代码:

param ([Parameter (Mandatory)]$param1, [Parameter(Mandatory)]$param2 )
function foo{
    param ($fusername,$fpassword)
    write-output $fusername

}
foo($param1,$param2)

我在 CMD 中明显收到的输出是:

c:\PS>CallMeWithParams.bat Alpha Beta
Alpha Beta
Alpha
Beta

我应该只得到第一个参数....

PS脚本中的代码是出于测试原因。我想确保我得到这两个参数并且我可以将它们分开以便在更新语句中使用第二个参数。

任何建议将不胜感激。PS1:是的,CMD 参数将用双引号括起来 PS2:atm 无法控制变量类型等。出于调试原因,我想保持简单。

标签: functionpowershellbatch-filecommand-lineparameters

解决方案


推荐阅读