我开发了一些自定义cmdlets,用于为SharePoint系统执行不同的导入任务。目前,所有这些cmdlet都在单个PowerShell脚本中以串行方式运行。我想更改此设置,以便每个cmdlet在单独的任务(作业)中执行。
主脚本使用Start-Job
启动一个新作业,该作业与包含对cmdlet的调用的单独脚本相关。该脚本启动并执行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添加更多功能,以便在作业中处理它们?
以下是脚本。
主:
[object]$credentials = Get-Credential -UserName "domain\user" -Message "Log in"
$job = start-job -FilePath "C:\ImportItems.ps1" -Name ImportItems -ArgumentList $credentials
$job | Wait-Job
ImportItems:
[CmdletBinding()]
Param(
[object]$credentials
)
Import-Module C:\Migration\MigrationShell.dll
Import-Items -Credential $credentials
答案 0 :(得分:3)
我找到了一个关于uservoice的解决方法,为我做了诀窍
if (
[Console]::InputEncoding -is [Text.UTF8Encoding] -and
[Console]::InputEncoding.GetPreamble().Length -ne 0
) {
[Console]::InputEncoding = New-Object Text.UTF8Encoding $false
}