包含自定义cmdlet的启动作业终止,但出现奇怪错误



我开发了一些自定义cmdlet,用于将不同的任务导入SharePoint系统。目前,所有这些cmdlet都是在单个PowerShell脚本中以串行类型运行的。我想更改此项,以便在单独的任务(作业)中执行每个cmdlet。

主脚本使用与包含cmdlet调用的单独脚本相关的Start-Job启动新作业。脚本启动并执行cmdlet。我还调试了执行的cmdlet的代码。到目前为止还不错。

但在大约15-20秒后,作业被终止,并显示以下错误消息:

There is an error processing data from the background process. Error reported:
Cannot process an element with node type "Text". Only Element and EndElement
node types are supported..
    + CategoryInfo          : OperationStopped: (localhost:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : JobFailure
    + PSComputerName        : localhost

我找不到任何关于如何处理这样一个错误的信息。我只是不知道这里出了什么问题。

我是否必须向自定义cmdlet添加更多功能,以便在作业中处理它们?

这是剧本。

Main:

[object]$credentials = Get-Credential -UserName "domainuser" -Message "Log in"
$job = start-job -FilePath "C:ImportItems.ps1" -Name ImportItems -ArgumentList $credentials
$job | Wait-Job

进口商品:

[CmdletBinding()]
Param(
  [object]$credentials
)
Import-Module C:MigrationMigrationShell.dll
Import-Items -Credential $credentials

我在用户语音上找到了一个解决方法,为我完成了

https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/14915283-job-cmdlets-fail-with-utf-8-codepage

if (
    [Console]::InputEncoding -is [Text.UTF8Encoding] -and
    [Console]::InputEncoding.GetPreamble().Length -ne 0
) {
    [Console]::InputEncoding = New-Object Text.UTF8Encoding $false
}

相关内容

  • 没有找到相关文章

最新更新