将值从 powershell 脚本传递到 cmd 脚本

将值从 powershell 脚本传递到 cmd 脚本

我想将值“200001”从PowerShell传递给cmd脚本“1%”多个PowerShell脚本使用的cmd脚本,并且每个PowerShell脚本都有自己的值。

PS脚本:

function CallcmdExtract
{
$var_cmd=  "D:\ cmd\Generatefile.cmd"
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    $ScriptPath = Split-Path $Invocation.MyCommand.Path
try {
Invoke-Item $var_cmd 
    }
catch {
    throw("ERROR: Problem encountered, error=$_")
    }
}
CallcmdExtract

我想要将值传递给它的cmd脚本是

@echo off
IF (%1) == () GOTO EXIT_ERROR
SET CLIENT=%1
.
.
.

答案1

我已经解决了这个问题

  • $您想要传递的值 = XXXXXX
  • 调用命令 -ScriptBlock {&$cmdpath $Value_you_want_to_pass}

答案2

当将 CMD 作为单独的进程运行时,我传递 tmp 文件,而不是从 powershell 调用:

$size | Out-File -Encoding "ASCII" tmp

通过CMD访问:

set /p size=<tmp

节省了我移植批处理文件到 powershell 脚本的时间。毕竟,64 位计算潜力尚未完全实现,而 16 位和 32 位计算仍然存在,甚至在 64 位硬件上运行。

请注意在 powershell 代码中使用 ASCII 编码,以避免 BOM 和 UTF16 传递给批处理脚本。

相关内容