在PowerShell中启动()错误(启动快捷方式)

问题描述:

我已经创建了一个Powershell脚本来在我的服务器上执行定时重新启动。这是我的代码片段,更具体地说是startServers函数。在PowerShell中启动()错误(启动快捷方式)

我已经将全局变量添加到函数中以努力举例。

基本上,每个服务器名称是在单独的目录中启动exe的快捷方式的名称。名称完全是这样的,并没有.lnk后(我已经尝试了两种方式)。

aff数组用于处理器关联。

这个脚本应该:

  1. 每个服务器
  2. 创建启动信息
  3. 启动过程
  4. 集亲和力

新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" 
    } 
} 

The Error I Get

+0

@Matt foreach($ s在$ servers中)这将定义$ s并使其成为循环的实例,因此它将是$ servers [0]然后是$ servers [1] – 2014-10-08 04:33:05

+3

发布完整的错误消息 – 2014-10-08 07:03:59

+0

You试图在此之前发布此代码,因为我承认它。 ....你想要“开始”一个服务器名称? – Matt 2014-10-08 11:29:00

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,你会得到你的结果。