powershell - 如何从PowerShell中加载的.dll文件返回对象
问题描述
我正在尝试使用 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]
解决方案
错误消息意味着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
推荐阅读
- python-3.x - Python 在使用一行代码比较来自不同数据帧的两个索引后产生 True False 输出
- react-native - 反应导航不渲染屏幕
- javascript - 重新发布价值成
- list - Flutter:在 null 上调用了“add”方法
- c - C 引用结构成员而不初始化值
- javascript - 使用 patchValue 对模板驱动的表单进行初始化
- jquery - jquery 或 CSS 的函数可以动态地将图像和文本调整为浏览器的宽度和/或高度并保持纵横比?
- javascript - 如何从firestore获取两个查询?
- gitlab-ci - 如何在 Gitlab CI/CD 测试中处理异步请求/响应
- java - Android Studio 中的“布局”和“布局资源”一样吗?如何以编程方式创建 XML 布局资源?