2016-08-20 12 views
0

私は、SharePoint Online上にサブサイトを作成するために、technetのスクリプトにimport-csvを追加しようとしていました。最終結果は、CSVから作成されたサブサイトを持つことになります。例えば。今年7、8年年9CSV値が上書きされています

私は次のことを行っている:

Import-Csv 'C:\sp\import.csv'|` 
    ForEach-Object{ 
    $Urlsub = $_.Urlsub 
    $Title = $_.Title 
    } 
$wci.Url = $Urlsub 
$wci.Title = $Title 

CSV:

Urlsub Title 
------ ----- 
Year7 Year 7 
Year8 Year 8 

これはCSVで唯一の最後の行のために正常に動作します。最後の行で私を残すすべてのものを上書きするようです。

私がそれを次のように変更した場合: $ Urlsub + = $ _。Urlsub $ Urlsubのすべての列が同じ配列に追加されます。

以前の値を上書きせずにCSVをインポートするにはどうすればよいですか? CSVなし

全スクリプト:

#Credentials to connect to office 365 site collection url 
$url ="xxx" 
$username="xxx" 
$password="xxx" 
$Password = $password |ConvertTo-SecureString -AsPlainText -force 

Write-Host "Load CSOM libraries" -foregroundcolor black -backgroundcolor yellow 
Set-Location $PSScriptRoot 
Add-Type -Path (Resolve-Path "Microsoft.SharePoint.Client.dll") 
Add-Type -Path (Resolve-Path "Microsoft.SharePoint.Client.Runtime.dll") 


Write-Host " CSOM libraries" -foregroundcolor black -backgroundcolor yellow 
Set-Location $PSScriptRoot 
Add-Type -Path (Resolve-Path "Microsoft.SharePoint.Client.dll") 
Add-Type -Path (Resolve-Path "Microsoft.SharePoint.Client.Runtime.dll") 
Write-Host "CSOM libraries loaded successfully" -foregroundcolor black -backgroundcolor Green 

Write-Host "authenticate to SharePoint Online Tenant site $url and get ClientContext object" -foregroundcolor black -backgroundcolor yellow 
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($url) 
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) 
$Context.Credentials = $credentials 
$context.RequestTimeOut = 5000 * 60 * 10; 
$web = $context.Web 
$site = $context.Site 
$context.Load($web) 
$context.Load($site) 
try 
{ 
    $context.ExecuteQuery() 
    Write-Host "authenticateed to SharePoint Online site collection $url and get ClientContext object succeefully" -foregroundcolor black -backgroundcolor Green 
} 
catch 
{ 
    Write-Host "Not able to authenticateed to SharePoint Online site collection $url $_.Exception.Message" -foregroundcolor black -backgroundcolor Red 
    return 
} 


#creating site using WebCreationInformation calss 
Write-Host "creating subsite using custom webtemplate" -foregroundcolor black -backgroundcolor yellow 
$wci = New-Object Microsoft.SharePoint.Client.WebCreationInformation 
$wci.Url = "Year7" 
$wci.Title = "Year 7" 
$wci.UseSamePermissionsAsParentSite = $true 
$wci.WebTemplate = "{D0714A63-356A-4B73-815B-6E1DF824237F}#Template" 
$wci.Language = 1033 
$blogWeb = $site.RootWeb.Webs.Add($wci); 
try 
{ 
$context.ExecuteQuery(); 
Write-Host "Sub site created successfully using custom webtemplate" -foregroundcolor black -backgroundcolor Green 
} 
catch 
{ 
Write-Host "Error while creating the Sub site using custom webtemplate" $_.Exception.Message -foregroundcolor black -backgroundcolor RED 
} 

答えて

0

あなたの変数の割り当ては、CSVファイルを読んでいるループの外にあるので、あなたは最後の値で終わります。そのため、変数が最後に設定されたもの(CSVの最後の行)が表示されます。

csvファイルの各行にWebCreationInformationのインスタンスを作成してから、この例で行うように、それぞれを$site.RootWeb.Websに追加する必要があります。

Import-Csv 'C:\sp\import.csv' | ForEach-Object{ 
    $wci = New-Object Microsoft.SharePoint.Client.WebCreationInformation 
    $wci.Url = $_.Urlsub 
    $wci.Title = $_.Title 
    $wci.UseSamePermissionsAsParentSite = $true 
    $wci.WebTemplate = "{D0714A63-356A-4B73-815B-6E1DF824237F}#Template" 
    $wci.Language = 1033 
    $blogWeb = $site.RootWeb.Webs.Add($wci); 
} 
関連する問題