【发布时间】:2015-02-27 18:27:07
【问题描述】:
我正在创建一个包含一些数据的 csv 平面。其中一列是内容类型,它可能在列中具有一种或多种内容类型(字符串值)。如何将数组对象中的所有值包含到平面文件中,但要包含受尊重的行?请参阅下面的代码...我将 $ct 传递给 add-content 但平面文件中没有内容类型数据。当我为 $ct 写主机时,我看到它有值。请提出建议。
#For Output file generation
$OutputFN = "Libraries.csv"
#delete the file, If already exist!
if (Test-Path $OutputFN)
{
Remove-Item $OutputFN
}
#Write the CSV Headers
Add-Content $OutputFN "Web URL, Site Name, Library Name, Content Types"
$systemlibs =@("Converted Forms", "Customized Reports", "Documents", "Form Templates",
"Images", "List Template Gallery", "Master Page Gallery", "Pages",
"Reporting Templates", "Site Assets", "Site Collection Documents",
"Site Collection Images", "Site Pages", "Solution Gallery",
"Style Library", "Theme Gallery", "Web Part Gallery", "wfpub")
#Get the Site collection
$Site= Get-SPSite "http://inside.contoso.com"
$spWebApp = $Site.WebApplication
foreach($allSites in $spWebApp.Sites)
{
#Loop through all Sub Sites
foreach($Web in $allSites.AllWebs)
{
#Write-Host "-----------------------------------------------------"
#Write-Host "Site Name: '$($web.Title)' at $($web.URL)"
#Write-Host "-----------------------------------------------------"
foreach($list in $Web.Lists)
{
if($list.BaseTemplate -eq "DocumentLibrary" -and $list.AllowContentTypes -eq $true)
{
if(-not ($systemlibs -Contains $list.Title))
{
if ($list.AllowContentTypes -eq $true)
{
$ct = @()
foreach ($contenttype in $list.ContentTypes)
{
$ctProperties = @{ContentType = $contenttype.Name}
$ctObject = New-Object PSObject -Property $ctProperties
#write-host $ct
$ct += $ctObject
#write-host $ct
#Write-Host "$($web.URL), $($web.Title), $($list.Title), $ct"
}
#$ct
write-host $ct
#Write-Host "$($web.URL), $($web.Title), $($list.Title), $($ct)"
$content = $web.URL + "," + $web.Title +"," + $list.Title +"," + $ct
add-content $OutputFN $content
}
}
}
}
}
}
【问题讨论】:
标签: arrays powershell csv output