繁体   English   中英

导入具有属性的用户,包括 msDS-cloudextensionattribute1

Import Users with properties, to include msDS-cloudextensionattribute1

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个适用于所有其他属性的脚本。 我不明白如何做到这一点。 我是脚本新手。 在添加msDS-cloudExtensionAttribute1之前,我的导入效果很好。 我还需要添加更多。 感谢您的浏览。

#Import active directory module for running AD cmdlets
Import-Module ActiveDirectory

#Store the data from ADUsers.csv in the $ADUsers variable
$Users = Import-csv C:\Test\TESTUSER3a.csv


#Loop through each row containing user details in the CSV file 

foreach ($User in $Users)



 {
    # Read user data from each field in each row
    # the username is used more often, so to prevent typing, save that in a variable
   $Username       = $User.SamAccountName
   
   }
  

    # Check to see if the user already exists in AD
    if (Get-ADUser -F {SamAccountName -eq $Username}) {
         #If user does exist, give a warning
         Write-Warning "A user account with username $Username already exist in Active Directory."
    }
    else {
        # User does not exist then proceed to create the new user account

        # create a hashtable for splatting the parameters
       

        $userProps = @{
            SamAccountName             = $User.SamAccountName                   
            Path                       = $User.path      
            GivenName                  = $User.GivenName 
            Surname                    = $User.Surname
            Initials                   = $User.Initials
            Name                       = $User.Name
            DisplayName                = $User.DisplayName
            UserPrincipalName          = $user.UserPrincipalName 
            Department                 = $User.Department
            Description                = $User.Description
            Office                     = $User.Office
            OfficePhone                = $User.OfficePhone
            EmailAddress               = $User.EmailAddress
            StreetAddress              = $User.StreetAddress
            POBox                      = $User.POBox
            City                       = $User.City
            State                      = $User.State
            PostalCode                 = $User.PostalCode
            Title                      = $User.Title
            Company                    = $User.Company
            msDS-cloudExtensionAttribute1 = $User.msDS-cloudExtensionattribute1
            # AccountPassword            = (ConvertTo-SecureString $User.password -AsPlainText -Force) 
            Enabled                    = $false
            ChangePasswordAtLogon      = $false
        }   #end userprops   
}
         New-ADUser @userProps
         Write-Host "The user account $User is created." -ForegroundColor Cyan
   

     #end else

 
2 个回复

您的哈希表键和属性名称msDS-cloudExtensionattribute1包含- ,它在语法上被解释为-运算符(减法),因此会破坏诸如$User.msDS-cloudExtensionattribute1

要使 PowerShell 将msDS-cloudExtensionattribute1识别为整个键/名称:

  • 作为哈希表

    • 将(文字)属性名称括在'...'中:

       @{ 'msDS-cloudExtensionattribute1' = 'foo' }
  • 作为属性名称

    • 将属性名称括在'...'中(适用于PowerShell版本):

       $User.'msDS-cloudExtensionattribute1'
    • 仅在PowerShell (Core) 7+中,您也可以将名称括在{...}中,类似于如何明确指定变量名称:

       # PS 7+ only $User.{msDS-cloudExtensionattribute1}

请注意, PowerShell 通常允许您通过变量使用分组运算符(...)的显式表达式间接指定属性(成员)名称。

因此,以下内容也可以:

# Using a variable:
$propName = 'msDS-cloudExtensionattribute1'
$User.$propName

# Using an explicit expression (contrived example):
$User.( 'msDS' + '-' + 'cloudExtensionattribute1' )

另外,您尝试对New-AdUser使用splatting无法正常工作,因为没有名为-msDS-cloudExtensionattribute1参数(这不是有效的参数名称)。

相反,扩展属性必须通过传递给-OtherAttributes参数的(嵌套)散列表来传递。

因此,您需要以下内容:

$userProps = @{
  SamAccountName             = $User.SamAccountName                   
  # ... 
  OtherAttributes = @{ 'msDS-cloudExtensionAttribute1' = $User.'msDS-cloudExtensionattribute1' }
  # ...
}       

如果您查看New-Aduser 命令,它有很长的参数列表,包括创建帐户的所有常用属性。 但是有许多用户属性,包括msDS-cloudExtensionAttribute1不是此命令的参数。

您对哈希表所做的是将其内容替换为命令中的各个参数:

New-Aduser -SamAccountName $User.SamAccountName -Path $User.path `
-GivenName $User.GivenName -Surname $User.Surname ...

由于msDS-cloudExtensionAttribute1属性不在默认的New-Aduser参数列表中,因此需要使用-Otherattributes参数添加。 这是它自己的属性名称和值对的哈希表。 您可以包含多个用分号分隔的属性。 由于破折号,您仍然需要在属性名称周围加上引号: -Otherattributes = @{'msDS-cloudExtensionAttribute1'="testing"}

在参数哈希表中,它应该如下所示:

$userProps = @{
    SamAccountName         = "TestTest2"               
    Path                   = "OU=TEST,DC=example,DC=net"  
    GivenName              = "Test"
    Surname                = "test2"
    Name                   = "TestTest2"
    AccountPassword        = (ConvertTo-SecureString $pass -AsPlainText -Force) 
    Enabled                = $false
    ChangePasswordAtLogon  = $true
    Otherattributes        = @{'msDS-cloudExtensionAttribute1'="testing"}
}
New-ADUser @userProps

(请注意,在故障排除时,只需使用文本输入和最少数量的参数来创建帐户,就可以简化事情。)

3 如何将CouchDB _users数据库属性包含到另一个数据库的视图中?

我正在向CouchDB中的_users数据库添加更多用户配置文件信息。 这包括名字,姓氏等。这可以正常工作,并且我可以存储其他个人资料信息。 我如何从另一个DB的视图地图功能中获取要链接(连接)的配置文件信息? 即,每个文档都有一个作者或用户字段,该字段记录创建该文档的用户。 如何获 ...

2011-03-18 15:05:10 1 281   couchdb
7 在另一个属性文件中包含属性

首先,我对我的近似英语表示歉意;) 我像这样在xml中加载两个属性文件 我的属性文件如下所示: file1.properties file2.properties(示例的模拟变量) 是的,我们谈论骆驼路由(v2.17) 当我启动应用程序时,il似乎没有填充变 ...

8 属性包括属性Struts2

我在Struts2中有一个项目,难以制作包含属性。 我更好地解释了这个问题 我的项目中有许多带有WEB-INF类级别标签的属性 关于使用Java中的IF的客户,我加载了 一切正常。 我的问题是,包括内另一个特性Generico_Mybundel.properties ...

10 包含包装属性的协议

我的应用程序的一个部分由多个卡或面板组成,就像一个好的 SwiftUI 开发人员一样,我试图使其尽可能可重复使用。 面板视图当前处理自己的持久性,为了做到这一点,它们每个都需要访问 EnvironmentObject(数据控制器)、托管 object 上下文(存储在 Apple 推荐的环境中)以及视 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM