繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM