如何从Powershell中已加载的.dll文件返回对象

问题描述 投票:0回答:1

我正在尝试使用Powershell脚本与Microsoft Dynamics CRM建立连接。在其他一些脚本中,我想使用此连接。如果导出连接对象,则不能将其用作连接对象。

我用以下方法返回对象:

[Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy] $connection = New-Object Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy($organizationUri,$null,$clientCredentials,$null)
[Microsoft.Xrm.Sdk.Entity] $systemUser = $connection.Retrieve("systemuser", $userId, (New-Object Microsoft.Xrm.Sdk.Query.ColumnSet(@("firstname", "lastname"))))
return $connection

这就是我如何调用上面的脚本:

 [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy]$connection = (New-CRMConnection -server $connectionjson.server -organization $connectionjson.organization -domain $connectionjson.domain -user $connectionjson.username -password $connectionjson.password)

但是我收到此错误(我从德语翻译过来,所以它不是确切的错误消息):

The value "System.Object[]" from type "System.Object[]" cannot be converted to "Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy".
In C:\Users\drieke\Documents\git\SNC-CRM\Solution\Import-CRMSolution.ps1:19 Zeichen:5
+     [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy]$connection =  ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : ConvertToFinalInvalidCastException

如何正确返回对象?

编辑

我的问题是,我的函数返回了一个数组。数组中的第一个对象是我需要的对象。因此,我的解决方案是以下代码中的[1]:

 [Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy]$connection = (New-CRMConnection -server $connectionjson.server -organization $connectionjson.organization -domain $connectionjson.domain -user $connectionjson.username -password $connectionjson.password)[1]
powershell dll dynamics-crm
1个回答
1
投票

错误消息表示New-CRMConnection返回对象数组。从数组到其他非集合对象的转换没有任何意义,因此Powershell抱怨。

要调试场景,首先将New-CRMConnection的返回值保存到变量中并从那里开始工作。

$connections = (New-CRMConnection -server $connectionjson.server `
-organization $connectionjson.organization -domain $connectionjson.domain `
-user $connectionjson.username -password $connectionjson.password)

# What kind of object is connections?
$connections.GetType()

# If it was an array, let's see its 1st element    
$c = $connections[0]

# What kind of object is the first element?
$c.GetType()

# If it looks sensible, try casting
[Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy]$connection = $c
© www.soinside.com 2019 - 2024. All rights reserved.