首页 > 解决方案 > 从 Get-ADUser 复制带有 New-ADUser -Instance 的 AD 用户返回无法转换值错误

问题描述

我正在尝试将 AD 用户帐户复制为较大脚本的一部分。它过去曾有效,但目前正在抛出此错误:

Cannot bind parameter 'Instance'. Cannot convert value "CN=Test Tester,OU=etc..." to type
"Microsoft.ActiveDirectory.Management.ADUser". Error: "Cannot convert the "CN=Test Tester,OU=etc..."
value of type "Deserialized.Microsoft.ActiveDirectory.Management.ADUser" to type
"Microsoft.ActiveDirectory.Management.ADUser"

相关代码:

$user_to_copy = test.tester
$user_to_copy_instance = Get-ADUser $user_to_copy

New-ADUser -Instance $user_to_copy_instance

我不明白为什么在尝试转换值类型时会引发错误,因为我正在遵循此处找到的“-Instance”参数的文档:https ://docs.microsoft.com/en-us/powershell /module/addsadministration/new-aduser?view=win10-ps

非常感谢任何帮助,谢谢!

标签: powershellactive-directorypowershell-2.0powershell-3.0powershell-4.0

解决方案


听起来您正在远程会话中运行它。当你从服务器取回一个对象时,因为它经历了序列化和反序列化,它不再是真正的那个对象了。这是一个“属性包”:只有属性,但没有与真实类型一起使用的方法。如果您愿意,可以在此处阅读更多相关信息。

为避免这种情况,您可以尝试在同一行中运行这两个命令:

New-ADUser -Instance (Get-ADUser $user_to_copy)

我不知道它会 100% 起作用,但它可能会起作用是有道理的。


推荐阅读