【发布时间】:2019-12-19 09:34:03
【问题描述】:
我知道这听起来像是以前的问题(部分是真的)。 然而,我在这里有一个有趣的转折。
需要的流量:
从 CMD 运行 Powershell 脚本。
看起来微不足道,实际上可以通过传递参数等...
但是...
我的 powershell 脚本中有一个 Start-Job,因为我希望它异步运行。
#######################################################################
#$DropLocation = "SOME UNC PATH"
#$buildid = "SOME VERSION"
param (
[parameter(Mandatory = $true)][string]$DropLocation,
[parameter(Mandatory = $true)][string]$buildid
)
Start-Job -Name Upload `
-ScriptBlock {
param (
[parameter(Mandatory = $true)][string]$DropLocation,
[parameter(Mandatory = $true)][string]$buildid
)
Write-Output "asd"
$buildpath = $DropLocation+"\"+$buildid
$logs = gci $buildpath"\logs" -Name "ActivityLog.AgentScope*.xml"
#Start-Sleep -Seconds 300
if ($logs.PSPath -gt 0)
{
$destination = $env:TEMP+"\Config\"
Copy-Item $logs.PSPath "$destination $buildid.xml"
}
} `
-ArgumentList $DropLocation,$buildid
#######################################################################
我正在使用 Param 从外部获取,然后再次在 Start-Job 中,以便 Async 作业获取其参数
此脚本保存为 SCRIPTNAME.ps1,我正在尝试从 CMD 运行它。
来自 cmd(以管理员身份运行)
powershell "& "C:\temp\SCRIPTNAME.ps1" "SOME UNC PATH" "SOME VERSION""
或
powershell -file "C:\temp\SCRIPTNAME.ps1" "SOME UNC PATH" "SOME VERSION"
什么都没有发生。
然而,从 PowerShell ISE 一切都运行良好
我们非常感谢您的帮助!
【问题讨论】:
-
你试过
cd C:\location of ps.1并运行.\thefile.ps1吗? -
您必须将第一个命令中嵌入的
"转义为\"。第二个命令看起来正确(并且是更好的选择)。当你说什么都没有发生时,你能更具体一点吗?没有错误信息?脚本是否被调用? -
嘿,我希望将文件复制到特定位置,但这并没有发生。而当从 Powershell ISE 运行与 PS1 脚本相同的情节时,它工作正常......我觉得在 CMD 调用期间我可能会遗漏一些东西
-
不幸的是,这给了我这个错误:找不到与参数名称“Argumentlist”匹配的参数
-
嗯!第一次运行,我看到了结果!作为构建调用的一部分,将在测试环境中尝试它^_^
标签: windows powershell cmd command-line