首页 > 解决方案 > Powershell:从文件创建用户并在共享上创建目录

问题描述

您好我正在尝试设置一个脚本来导入用户的 txt 文件,分隔名字/姓氏,然后在 OU 中创建用户。这可行,但是我尝试在它之后添加另一个命令,但仍然在在共享上创建目录的循环中,因为当我尝试在命令中尝试为用户设置主目录时,主目录已设置但目录是从未创造。因此,我试图将创建目录添加到此命令中,但出现错误:

Get-Content C:\Users\test.user\Desktop\name.txt | ForEach-Object {
    $Split = $_.Split(" ");
    $given=$Split[0];
    $sur=$Split[1]; 
    $uname=$given + "." + $sur; 
    New-ADUser -GivenName $given -Surname $sur -Name ($given + " " + $sur) `
      -UserPrincipalName (($uname + "@" + "$env:userdnsdomain")).ToLower() `
      -path "OU=testou, DC=testdomain, DC=local" -SamAccountName ($uname).ToLower() `
      -AccountPassword (ConvertTo-SecureString -AsPlainText "pass-word1" `
      -Force) -Enabled $true -ChangePasswordAtLogon $true `
      -Verbose New-Item -Path "\\testdomain.local\userdata\test users\$uname" -ItemType "directory"
}

New-ADUser : Cannot bind parameter because parameter 'Path' is specified more than once. To provide multiple values to parameters that can accept multiple values, use the array syntax. For example, "-parameter value1,value2,value3". At line:1 char:509

我不确定如何像它推荐的那样去做,因为我是脚本新手。如何将 New-Item -Path 命令添加到命令中,以便在共享上创建目录,然后我可以为其设置用户主目录。然后我可能会尝试将主目录设置到此命令中。我试图删除 -Path,因为您可以在没有它的情况下创建目录,但是它给出了一个错误:New-ADUser:找不到接受参数“New-Item”的位置参数。在行:1 字符:161

任何帮助将不胜感激

标签: powershellactive-directory

解决方案


在为您格式化代码时,问题是您缺少一个;. 这是更新的版本。下一次尽量不要单行它,它会让你费时费力地弄清楚发生了什么。

Get-Content C:\Users\test.user\Desktop\name.txt | ForEach-Object {
    $Split = $_.Split(" ");
    $given=$Split[0];
    $sur=$Split[1]; 
    $uname=$given + "." + $sur; 
    New-ADUser -GivenName $given -Surname $sur -Name ($given + " " + $sur) `
      -UserPrincipalName (($uname + "@" + "$env:userdnsdomain")).ToLower() `
      -path "OU=testou, DC=testdomain, DC=local" -SamAccountName ($uname).ToLower() `
      -AccountPassword (ConvertTo-SecureString -AsPlainText "pass-word1" `
      -Force) -Enabled $true -ChangePasswordAtLogon $true `
      -Verbose -WhatIf # Semi-colon here if you want it a one-liner, or new line for readability
    New-Item -Path "\\testdomain.local\userdata\test users\$uname" -ItemType "directory" -WhatIf
}

New-Item需要在新行上,或者分号需要在之后-Verbose

编辑

根据 postanote 的评论添加到 -WhatIf 中,我同意。


推荐阅读