如何在Set-ADUser中使用“-replace”?

4

我想通过C#来使用PowerShell来修改Active Directory属性。这是我的PowerShell命令,可以用于替换一个Active Directory属性:

Set-ADUser -Identity "kchnam" -Replace @{extensionAttribute2="Neuer Wert"}

我该如何在C#命令中添加@{extensionAttribute2="Neuer Wert"}

我的解决方案不起作用:

Command setUser = new Command("Set-ADUser");
setUser.Parameters.Add("Identity", aduser);
string testadd = "@{extensionAttribute2=" + quote + "Neuer Wert" + quote + "}";
setUser.Parameters.Add("Replace", testadd);

4
Hashtable testadd = new Hashtable{{"extensionAttribute2","Neuer Wert"}}; 这段代码创建了一个Hashtable对象,其中包含一个键值对:"extensionAttribute2"和"Neuer Wert"。 - user4003407
是的,它正在工作!非常感谢 :) - Matthias Nagele
@PetSerAl 请将此作为回答添加,最好附带简短的解释。 - Eris
1个回答

2
在PowerShell中,它:
@{extensionAttribute2="Neuer Wert"}

意思是一个 Hashtable 的字面量,不仅仅是 string。所以,在C#中你还需要创建一个 Hashtable 对象:

new Hashtable{{"extensionAttribute2","Neuer Wert"}}

尽管如此,这并不完全等同于PowerShell,因为PowerShell使用不区分大小写的键比较器创建Hashtable。但很可能您可以使用任何实现IDictionary的集合,而不仅仅是Hashtable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接