如何将变量从批处理文件传递到Powershell脚本

时间:2015-06-05 14:16:56

标签: windows powershell batch-file

我有一个批处理文件,可以将用户文件从一台计算机复制到另一台联网计算机。

@echo off
cls
@echo Type the old Computer Name
set /p asset=

REM robocopy.exe \\%asset%\c$\ C:\ /S /Z /XJD /XJ /XA:SH /XA:T /XD "Dir1" "Dir2"  /XF *.dll *.log *.txt *.exe /log+:"\\server\path\%asset%-to-%computername%-Transfer.log" /NP /FP /V /TEE

PowerShell.exe -Command "& {Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"

pause

这是我的PowerShell脚本:

$source = "\\${env:asset}\C$\Temp\Source"
$dest = "C:\Temp\Dest"
Write-Output $source
Read-Host "Press ENTER to quit"

然后我需要调用一个调用管理员登录的PowerShell脚本,然后传递%asset%%useraiu%个变量。

我似乎无法弄清楚如何将%asset%%useraiu%从我的批处理文件传递到PowerShell脚本。

1 个答案:

答案 0 :(得分:1)

我发现如果您从批处理文件调用Powershell脚本并且需要使用admin运行Powershell脚本,则需要使用此语法。

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File """"%~dpn0.ps1"""" """"%asset%"""" ' -Verb RunAs}"

PowerShell脚本名称和参数需要用4个双引号括起来,以便正确处理带空格的路径/值

这是迄今为止唯一对我有用的解决方案。