按工作流顺序调用命令

问题描述 投票:0回答:1

请帮助使Invoke-Command正常工作。它说-ScriptBlock参数为null。看来RegHomePage()函数在InlineScript {}中不可用。

function RegHomePage (){
get-item -path Registry::"HKEY_USERS\*\Software\Microsoft\Internet Explorer\Main" | `
Get-ItemProperty | Where-Object {$_."Start Page" -ne $null} | Set-ItemProperty -Name "Start Page" -Value "about:blank"
}

$creds = Get-Credential -Credential value\wadmin
workflow foreachtest
{
    param([Parameter(mandatory=$true)][string[]]$computers)

    foreach -parallel -throttlelimit 20 ($computer in $computers)
    {
        sequence
        {
            $isPing = Test-Connection -count 1 $computer -quiet
            if($isPing){                
                $isWSMan  = [bool](Test-WSMan $computer -ErrorAction SilentlyContinue)
            }
            if($isWSMan){
                InlineScript{
                    Invoke-Command -ComputerName $USING:computer -ScriptBlock ${function:RegHomePage}
                    } -PSComputerName $computers
                echo "$computer OK"
            }
            Else{
                $Workflow:out += "$computer`r`n"
                echo "$computer FAILED"
            }       

        }

    }
    Out-File .\offline.txt -InputObject $out
}

foreachtest -computers (Get-Content .\comps.txt)
powershell invoke-command
1个回答
0
投票

InlineScript不支持$ using:function,尝试将函数放入工作流中。

© www.soinside.com 2019 - 2024. All rights reserved.