在PowerShell中启动()错误(启动快捷方式)
问题描述:
我已经创建了一个Powershell脚本来在我的服务器上执行定时重新启动。这是我的代码片段,更具体地说是startServers函数。在PowerShell中启动()错误(启动快捷方式)
我已经将全局变量添加到函数中以努力举例。
基本上,每个服务器名称是在单独的目录中启动exe的快捷方式的名称。名称完全是这样的,并没有.lnk后(我已经尝试了两种方式)。
aff数组用于处理器关联。
这个脚本应该:
- 每个服务器
- 创建启动信息
- 启动过程
- 集亲和力
新Sysem Diag(诊断)处理这不是案例:我得到一个围绕“arg0”的错误,它无法启动这个过程。我想如果任何人有进一步的解释,args0会发生什么,以及它会有什么帮助。
代码段:
function startServers
{
#Added For Example Purposes
$servers = @("public", "private")
$aff = @(196, 56)
#End
$i = 0
foreach($s in $servers)
{
$app_name = "$s"
$a = $aff[$i]
$app_arguments = "arg0"
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.Arguments = $app_arguments
$pinfo.FileName = $app_name
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start()
$p.ProcessorAffinity=$a
$i = $i + 1
#Start "$s"
Write-Output "Starting $s"
}
}
答
function startServers {
$i = 0
$global:pids = @()
foreach($s in $servers)
{
$a = $aff[$i]
$Starter = Start-Process -FilePath $s -WindowStyle Minimized -PassThru
$Process = Get-Process -Id $Starter.ID
$global:pids += $Process.ID
$Process.ProcessorAffinity = $a
$CurrentTime = updateTime
Write-Output "Starting $s at $CurrentTime"
$i = $i + 1
Start-Sleep -s 10
}
return
}
这是我最后解决问题。我切换到PID跟踪过程。
我在启动过程中使用了-PassThru,并将其作为变量。
然后我创建了一个变量,该变量在开始调用Process之后保存PID。
然后你做基本的$ foo.ProcessorAffinity = foo,你会得到你的结果。
@Matt foreach($ s在$ servers中)这将定义$ s并使其成为循环的实例,因此它将是$ servers [0]然后是$ servers [1] – 2014-10-08 04:33:05
发布完整的错误消息 – 2014-10-08 07:03:59
You试图在此之前发布此代码,因为我承认它。 ....你想要“开始”一个服务器名称? – Matt 2014-10-08 11:29:00