PowerShell模拟WorkFlow中的Cim命令

时间:2015-07-13 13:43:39

标签: powershell workflow workflow-activity

当运行Windows PowerShell WorkFlow时,如果可以模仿另一个用户并使用New-CimSession设置DCOM来连接旧服务器(没有PowerShell),那将会很不错使用WSMAN的新服务器。网上有一些information可用于此主题。

使用Set-PSBreakPoint开始对此进行故障排除非常困难,因为它无法访问部分InlineScript中正在进行的非常烦人的流程。

但是,每次我尝试运行以下Test-Stuff WorkFlow时,它都会失败并出现弹出错误Windows PowerShell has stopped working。在控制台中它说:

Microsoft.PowerShell.Utility\Write-Error : The background process reported an error with the following message: .
At Test-Stuff:59 char:59

代码:

Workflow Test-Stuff {
   Param(
        [String[]]$Servers,
        [PSCredential]$Credentials
    )
     foreach -parallel ($S in $Servers) {
        InlineScript {
            $SessionParams = @{
                ErrorAction  = 'Stop'
                Credential   = $Using:Credentials
                ComputerName = $Using:S
            }
            Try {
                $Session = New-CimSession @SessionParams
            }
            Catch {
                $Opt = New-CimSessionOption -Protocol Dcom
                $Session = New-CimSession @SessionParams -SessionOption $Opt
            }

            $Params = @{
                ClassName    = 'Win32_Printer'
                Property     = '*'
                CimSession   = $Session
                ErrorAction  = 'Stop'
            }  
            if ($Printers = Get-CimInstance @Params) {
                $Printers
                Remove-CimSession $Session
            }
        }
    }
}

当运行与普通函数相同的代码时,它工作得很好..

0 个答案:

没有答案