我创建了一个列出某些Active Directory用户的CSV文件。现在我想使用此CSV为这些用户创建一定数量的文件夹。我从
开始alter table dbo.mytable alter column mycolumn INT NOT NULL;
go
alter table dbo.mytable add primary key (mycolumn);
继续
$UserList = Import-Csv .\users.csv
我希望每个文件夹ForEach ($UserName in $UserList) {
$UserName
New-Item -Name $Username -ItemType directory -Path .\Download\$UserName
New-Item -Name $Username -ItemType directory -Path .\Home\$UserName
New-Item -Name $Username -ItemType directory -Path .\Publishing\$UserName
}
,Download
和Home
都包含一个具有用户名的子文件夹,例如Publishing
。
当我运行此脚本时,文件夹名称的结果为testuser
,这不是预期的结果。
如何解决这个命名问题?
答案 0 :(得分:3)
您需要取消引用该属性。
如果你运行:
$UserList = Import-Csv .\users.csv
$UserList[0]
你应该看到这样的事情:
name
----
testuser
name
标题告诉您它是对象$UserList
的属性。
对于解决方案,您可以这样做:
ForEach ($User in $UserList) {
$UserName = $User.Name
$UserName
New-Item -Name $Username -ItemType directory -Path .\Download\$UserName
New-Item -Name $Username -ItemType directory -Path .\Home\$UserName
New-Item -Name $Username -ItemType directory -Path .\Publishing\$UserName
}
或者这个:
ForEach ($User in $UserList) {
$User.Name
New-Item -Name $Username -ItemType directory -Path .\Download\$($User.Name)
New-Item -Name $Username -ItemType directory -Path .\Home\$($User.Name)
New-Item -Name $Username -ItemType directory -Path .\Publishing\$($User.Name)
}
或者,或者,您可以像这样在导入时获取名称:
$UserNameList = Import-Csv .\users.csv | Select-Object -ExpandProperty Name
ForEach ($UserName in $UserNameList) {
$UserName
New-Item -Name $Username -ItemType directory -Path .\Download\$UserName
New-Item -Name $Username -ItemType directory -Path .\Home\$UserName
New-Item -Name $Username -ItemType directory -Path .\Publishing\$UserName
}
但是,如果您要使用的CSV文件中还有其他值,则最后一个选项不是一个很好的解决方案,因为您仅导入名称。