[英]How to pass variable from Batch File to a Powershell Script
我有一个批处理文件,可将用户文件从一台计算机复制到另一台联网计算机。
@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脚本。
我发现,如果要从批处理文件调用Powershell脚本,并且需要使用admin运行Powershell脚本,则需要使用此语法。
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File """"%~dpn0.ps1"""" """"%asset%"""" ' -Verb RunAs}"
PowerShell脚本名称和参数需要用4个双引号引起来,以便正确处理带有空格的路径/值
到目前为止,这是唯一对我有用的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.