PowerShell AD DLs名称中的连字符有2种不同的格式?逃避角色或其他什么?

时间:2017-05-10 15:59:25

标签: powershell

我正在使用PowerShell备份我们计划从AD中删除的DL列表。在Get-ADGroup "DL – Clinical实验室监督员和#34; JNIEXPORT jobjectArray JNICALL Java_main_returndays(JNIEnv *env, jobject jobj) { char *days[]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; jstring str; jobjectArray day = 0; jsize len = 7; int i; day = (*env)->NewObjectArray(env,len,(*env)->FindClass(env,"java/lang/String"),0); for(i=0;i<7;i++)//// without this loop ? { str = (*env)->NewStringUTF(env,days[i]); (*env)->SetObjectArrayElement(env,day,i,str); } return day; } 实验室主管的情况下,有一些连字符的名称很多。找到该组并带回属性,但是当我尝试在foreach循环中提取此名称时,通过变量,我得到了这个奇怪的错误:

  

Get-ADGroup:找不到具有身份的对象:&#39;DL�临床实验室主管&#39;。

这里看起来像一个正方形,但在ISE中,它是一个?在它周围有钻石形状,有时它是倒置的?有谁知道为什么在AD中这个角色会发生这种情况?在Excel中作为csv,短划线比普通短划线/超级短。我试过找到替换,但那个名字在AD中找不到。

1 个答案:

答案 0 :(得分:2)

如果您使用word或excel处理了包含连字符的原始名称列表,则它们可能已被AutoFormat功能转换为unicode短划线,这就是为什么它在Excel中呈现较长的宽度。

使用baby运算符将任何类型的短划线或连字符替换为实际的连字符:

def censor(text, word):
    censored = text.split()
    for n in range(len(censored)): <== use `range()` 
        if censored[n] == word:
          censored[n] = "*"*len(word) <== 
    print " ".join(censored)

-replace是unicode字符类子集&#34; P unctuation, d ashes&#34;

的简写