2017-03-13 7 views
-1

特定のActive DirectoryユーザをリストしたCSVファイルを作成しました。今私はこれらのユーザーのために一定量のフォルダを作成するためにこのCSVを使用したいと思います。私はCSVファイルを使用しているADユーザのCeateフォルダに間違ったフォルダ名が生成される

$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 
} 

を続け例えば、各フォルダDownloadHomePublishingは、ユーザ名を持つサブフォルダが含まれていることですtestuser。 このスクリプトを実行すると、フォルダ名の結果は@{name=testuser}になりますが、これは予期しない結果です。

この名前の問題を解決する方法はありますか?

答えて

3

プロパティを逆参照する必要があります。

あなたはこれを実行する場合:あなたは、オブジェクト$UserListの財産だが伝え見出し

name 
---- 
testuser 

name

$UserList = Import-Csv .\users.csv 
$UserList[0] 

あなたはこのようなものが表示されるはずです。解決のために

、あなたはこれを行うことができます:

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ファイルに他の値がある場合、この最後のオプションは良い解決策ではありません名前をインポートするだけです。

関連する問題