我有一个批处理文件,可以将用户文件从一台计算机复制到另一台联网计算机。
@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脚本。
答案 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个双引号括起来,以便正确处理带空格的路径/值
这是迄今为止唯一对我有用的解决方案。