2011-11-15 69 views
1

編寫XML我有一個腳本,讓所有的信息,我需要我的SharePoint場:使用PowerShell

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null 

$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local 
$websvcs = $farm.Services | where -FilterScript {$_.GetType() -eq [Microsoft.SharePoint.Administration.SPWebService]} 
$webapps = @() 

foreach ($websvc in $websvcs) { 
      write-output "Web Applications" 
      write-output "" 
    foreach ($webapp in $websvc.WebApplications) { 
     write-output "Webapp Name -->"$webapp.Name 
      write-output "" 
      write-output "Site Collections" 
      write-output "" 
    foreach ($site in $webapp.Sites) { 
     write-output "Site URL --> -->" $site.URL 
      write-output "" 
      write-output "Websites" 
      write-output "" 
    foreach ($web in $site.AllWebs) { 
     write-output "Web URL --> --> -->" $web.URL 
      write-output "" 
      write-output "Lists" 
      write-output "" 
    foreach ($list in $web.Lists) { 
      write-output "List Title --> --> --> -->" $list.Title 
      write-output "" 
    } 

    foreach ($group in $web.Groups) { 
      write-output "Group Name --> --> --> -->" $group.Name 
      write-output "" 

    foreach ($user in $group.Users) { 
      write-output "User Name --> --> --> -->" $user.Name 
      write-output "" 
    } 
    } 

    } 

    } 

    } 
} 

我想使輸出到一個XML文件,然後將XML文件連接到HTML,使它的經理使用的網站

我該怎麼辦?

感謝您的幫助!

回答

2

如果要將對象輸出爲XML,可以嘗試使用Export-Clixml命令。例如:

dir |出口CLIXML C:\ TEMP \的Output.xml

如果你想直接的HTML頁面,則可以使用COMMANDE的ConvertTo-HTML:

目錄| ConvertTo-Html> c:\ temp \ output.html

您可以使用head,title,body和CSS自定義後面的命令。

+0

這不會幫助。嘗試過它 – alex

+0

如果有人想證明xml是 - 與他們所說的相反 - 不是人類可讀/可寫的,那麼真的很好的代碼。 – TNT

3

我會說你有2種選擇,應該是相當容易:不是使用write-輸出

最簡單的方法是,建立一個字符串作爲你的XML。

$procs = get-Process 

$xml = "<xml>" 
foreach($proc in $procs) 
{ 
    $xml += "<process name='" + $proc.Name + "' id='Proc_"+$proc.Id+"'>" 
    $xml += "<modules>" 

    foreach($module in $proc.Modules) 
    { 
     $xml += "<module>" 
     $xml += $module.ModuleName 
     $xml += "</module>" 
    } 
    $xml += "</modules>" 
    $xml += "</process>" 
} 

$xml += "</xml>" 

$xml | out-File -FilePath c:\temp\proc1.xml 

或者 - 你可以在你的輸出建立爲psobject,然後嘗試PowerShell命令的一個輸出爲XML。可能是更強大的方法,因爲您可以通過管道使用其他PowerShell cmdlet。這看起來像這樣:

$procs = get-Process 

$processObject = @() 
foreach($proc in $procs) 
{ 
    $procInfo = new-Object PSObject 
    $procInfo | add-Member NoteProperty -Name "Process" $proc.Name 
    $procInfo | add-Member NoteProperty -Name "ID" $proc.Id 
    $moduleInfo = @() 
    foreach($module in $proc.Modules) 
    {   
     $moduleInfo += $module.ModuleName 
    } 
    $procInfo | add-Member NoteProperty -Name "Module" $moduleInfo 
    $processObject += $procInfo 
} 

$processObject | export-Clixml c:\temp\procs.xml 
+0

out-file似乎正在寫入xml對象簽名,而不是實際的xml對象 –