【发布时间】:2021-08-10 13:11:40
【问题描述】:
使用该程序得到了您的支持或 GYB。我运行以下命令
Start-Process -FilePath 'C:\Gyb\gyb.exe' -ArgumentList @("--email <Email Address>", "--action backup", "--local-folder $GYBfolder", "--service-account", "--batch-size 4") -Wait
问题是当这个过程完成后我的脚本没有完成。
$GYBfolder = $GYBfolder.Replace('"', "")
$output = [PSCustomObject]@{
Name = $SourceGYB
Folder = $GYBfolder
}
$filename = "C:\reports\" + $SourceGYB.Split("@")[0] + "_Backup.csv"
$output | Export-Csv $filename -NoTypeInformation | Format-Table text-align=left -AutoSize
Return $filename
由于某种原因,脚本在返回之前停止。 我很想知道我是否应该使用不同的命令来运行 GYB? 关于脚本为什么不处理返回的任何想法?
【问题讨论】:
-
这里可能没有理由使用
Start-Process。你真的应该只在你想要异步执行或者绝对需要它输出的属性之一或它提供的参数时才使用它。 -
@AdminOfThings 我应该将其更改为
invoke-command还是? -
我没有使用过这个命令,但是如果你的程序路径在引号中,你应该可以直接用
&(调用)操作符来调用它。如果您将参数原样复制到变量中,您将拥有一个数组(例如 $ArgArray)。你可能会运行类似& 'c:\gyb\gyb.exe' $ArgArray的东西。 -
@AdminOfThings 不起作用,我将失去等待。
gyb.exe: error: unrecognized arguments: --email $SourceGYB --action backup --local-folder $GYBfolder --batch-size 4 -
不要在本地使用
Invoke-Command。使用 call&运算符代替(或省略,它通常是可选的)来执行本地外部命令。虽然您想等待该过程完成,但您在这里使用Start-Process是合适的。
标签: powershell