首页 > 解决方案 > 如何在 start-job 中使用 -InitializationScript 中的 2 个以上函数

问题描述

我想在以下 PowerShell 启动作业代码中使用 -InitializationScript 中的 2 个函数:

$IISfunc={ Function pool_RemoteServer ($PoolName,$server)
{
    "doing something in iis"
} 
}

$AppState= { Function GetAppState($AppServer,$AppName)
           {
            "doing something in appserver"

            }
            }

$block ={
        Param([string] $AppServer,
              [string] $AppName,
              [string] $PoolName,
              [string] $AppState,
              [string] $IISfunc
             )
              pool_RemoteServer -PoolName $PoolName -server $AppServer
              GetAppState -AppServer $AppServer -AppName $AppName
               }


Get-Job | Remove-Job
$MaxThreads = 20
invoke-service -JobserviceName  $JobserviceName

    foreach ($AppServer in $AppServers -split ",")
            {
                While ($(Get-Job -state running).count -ge $MaxThreads){
                    Start-Sleep -Milliseconds 3
            }
        Start-Job -Scriptblock $block -ArgumentList $AppServer,$AppName,$PoolName -InitializationScript $AppState,$IISfunc

            }

While ($(Get-Job -State Running).count -gt 0){
    start-sleep 1
}

foreach($job in Get-Job){
    $info= Receive-Job -Id ($job.Id)
}

Get-Job | Remove-Job

我遇到了这个错误:Start-Job:无法将'System.Object []'转换为参数'InitializationScript'所需的类型'System.Management.Automation.ScriptBlock'。不支持指定的方法。在 line:21 char:95 + ... lizationScript $AppState,$IISfunc

标签: start-job

解决方案


哦!它是如此简单的问题!请在您的代码中包含以下解决方案:

  $func={ Function pool_RemoteServer ($PoolName,$server)
        {
            "doing something in iis"
        } 

          Function GetAppState($AppServer,$AppName)
        {
        "doing something in appserver"
        }
        }
  • 亲切的问候

推荐阅读