Мне нужно удалить чертовски много записей с помощью веб-сервиса. Модуль Microsoft.Xrm.Data.Powershell предоставляет несколько командлетов для выполнения этой работы. .
Следующий скрипт должен выполняться разными заданиями:
$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» требуется версия 4.0 PowerShell, но текущий узел использует версию 1.0.
На основе онлайн документации для 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"
PowerShellHostVersion
безPowerShellHostName
мне кажется странным. Попробуйте прокомментировать эту строкуPowerShellHostVersion = '4.0'
в манифесте модуляMicrosoft.Xrm.Data.PowerShell.psd1
и повторить попытку. - person user4003407   schedule 04.02.2016