我在AD中有一些用户设置了UPN地址User@this.org.我想更改这些用户,以便他们的UPN看起来像那样User@that.com.
我写了一个PS专线给我这样的用户:
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(userPrincipalName=*@this.org))" -SearchBase "OU=this,DC=that" | Select SamAccountName
Run Code Online (Sandbox Code Playgroud)
但是如何更新这些用户.我知道Set-AdUser命令,但我无法弄清楚如何将结果Get-Aduser输入其中.
假设我有一个像这样的方法的dll:
public (string, List<string>) MyMethod(NameValueCollection Settings, MyClass1 params)
{
//do something
return (result, errorList);
}
Run Code Online (Sandbox Code Playgroud)
现在从我的主项目中我会这样称呼它:
var shipmentNumber = string.Empty;
var errorList = new List<string>;
var DLL = Assembly.LoadFile($@"{AppDomain.CurrentDomain.BaseDirectory}{appSettings[$"{parameters.TestCase}_DLL_Name"]}");
Type classType;
classType = DLL.GetType($"{appSettings[$"{parameters.TestCase}_DLL_Name"].Replace(".dll", "")}.MyService");
dynamic d = Activator.CreateInstance(classType);
(result, errorList)= d.MyMethod(appSettings, params);
Run Code Online (Sandbox Code Playgroud)
但是这会在这里显示的最后一行给出错误Cannot deconstruct dynamic objects.有没有办法可以在这里正确地返回元组?
我有一个列表Guid,其中保留Guid了我的项目列表中的所有重复项:
IEnumerable<Guid> duplicateExists = ListOfMyItems
.GroupBy(x => x.ID)
.Where(group => group.Count() > 1)
.Select(group => group.Key);
Run Code Online (Sandbox Code Playgroud)
现在,我要检查是否存在重复,如果存在,请从中删除它的最后一次出现ListOfMyItems。DeleteItemFromOrder只是从数据库中删除一行。
这有效:
foreach (var item in duplicateExists)
{
_ = ListOfMyItems.Remove(ListOfMyItems.Last(x => x.ID == item));
MyLogic.DeleteItemFromOrder(Bill.ID, item);
return;
}
Run Code Online (Sandbox Code Playgroud)
虽然这将输入条件if,然后失败DeleteItemFromOrder,但告诉我duplicateExists - sequence contains no elements:
if(duplicateExists.Any())
{
_ = ListOfMyItems.Remove(ListOfMyItems.Last(x => x.ID == duplicateExists.First()));
MyLogic.DeleteItemFromOrder(Bill.ID, duplicateExists.First());
return;
}
Run Code Online (Sandbox Code Playgroud)
为什么第二个示例失败?
我正在将一个从VB.NET移植到C#的应用程序,并发现我不能.ItemOf在C#中使用,但是如果我没有使用.ItemOf它似乎工作.但是,以下两个片段实际上是在做同样的事情吗?
VB
Public Shared Settings As NameValueCollection
'some code
Dim key As XmlNode
For Each key In node.ChildNodes
MobileConfiguration.Settings.Add(key.Attributes.ItemOf("key").Value, key.Attributes.ItemOf("value").Value)
Next
'some code
Run Code Online (Sandbox Code Playgroud)
C#
public static NameValueCollection Settings;
//some code
foreach (XmlNode key in node.ChildNodes)
MobileConfiguration.Settings.Add(key.Attributes["key"].Value, key.Attributes["value"].Value);
//some code
Run Code Online (Sandbox Code Playgroud)