启动作业和PSVersion错误

时间:2016-02-04 15:18:43

标签: powershell start-job

我需要使用网络服务删除大量的记录。模块Microsoft.Xrm.Data.Powershell提供了几个cmdlet来完成这项工作。

以下脚本应由不同的作业执行:

$packageCmd = {
    param($jobName, $crmConnection, $package)

    # Xrm is not a module that is system-wide loaded 
    Import-Module Microsoft.Xrm.Data.Powershell

    $counter = 0

    write $jobName

    foreach($record in $package) {

        Remove-CrmRecord -conn $crmConnection -EntityLogicalName 'foobar' -Id $record.foobarid
        $counter++
    }
}

这是我用来执行工作的代码:

foreach($p in $packages) {

    $jobname = $jobName =  ('Del_Data_Pak_{0}' -f $packageNumber)
    Start-job  -Name $jobname -ScriptBlock $packageCmd -ArgumentList $jobName, $crmConnection, $p

    $packageNumber++
}

当我执行我的代码时,在作业中抛出以下错误消息:

Der aktuelle Windows PowerShell-Host ist: "ServerRemoteHost" (Version 1.0.0.0). Zum Ausführen 
des Moduls "C:\Users\foobar\Documents\WindowsPowerShell\Modules\Microsoft.Xrm.Data.Powershell\Micro
soft.Xrm.Data.Powershell.psd1" ist mindestens Version 4.0 des Windows PowerShell-Hosts 
erforderlich.
    + CategoryInfo          : ResourceUnavailable: (C:\Users\foobar\Do...Powershell.psd1:String) [ 
   Import-Module], InvalidOperationException
    + FullyQualifiedErrorId : Modules_InsufficientPowerShellHostVersion,Microsoft.PowerShell.Co 
   mmands.ImportModuleCommand
    + PSComputerName        : localhost

错误消息显示模块“Microsoft.Xrm.Data.Powershell”需要PowerShell 4.0版,但当前主机使用的是1.0版。

基于online documentation for Start-Job我可以传递参数-PSVersion,但只能传递值2.0或3.0。

这是否意味着执行使用需要PowerShell 4.0 / 5.0的模块的作业根本不可能?

更新2016-02-04:我在“Microsoft.Xrm.Data.PowerShell.psd1”文件中注释掉了以下行。

# Minimum version of the Windows PowerShell host required by this module
#PowerShellHostVersion = '4.0'

...但现在我在工作中收到了这个错误:

Die Argumenttransformation für den Parameter "conn" kann nicht verarbeitet werden. 
Der Wert "Microsoft.Xrm.Tooling.Connector.CrmServiceClient" vom Typ 
"Deserialized.Microsoft.Xrm.Tooling.Connector.CrmServiceClient" kann nicht in den 
Typ "Microsoft.Xrm.Tooling.Connector.CrmServiceClient" konvertiert werden.
    + CategoryInfo          : InvalidData: (:) [Remove-CrmRecord], ParameterBindin. 
   ..mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Remove-CrmRecord
    + PSComputerName        : localhost

我不明白为什么我现在有“Deserialized.Microsoft.Xrm.Tooling.Connector.CrmServiceClient”和“Microsoft.Xrm.Tooling.Connector.CrmServiceClient”

0 个答案:

没有答案