Skip to content

Instantly share code, notes, and snippets.

@pstakuu
Created February 4, 2021 18:17
Show Gist options
  • Save pstakuu/1800d1fe57af372ad2aeaae93a197fa1 to your computer and use it in GitHub Desktop.
Save pstakuu/1800d1fe57af372ad2aeaae93a197fa1 to your computer and use it in GitHub Desktop.
mockup of creating visio diagram from SharePoint site report
$folder1 = new-object -TypeName psobject -Property @{
Name = "folder1"
List = "DocLib1"
Site = "Web1"
}
$folder2 = new-object -TypeName psobject -Property @{
Name = "folder2"
List = "DocLib1"
Site = "Web1"
}
$folder3 = new-object -TypeName psobject -Property @{
Name = "folder3"
List = "DocLib1"
Site = "Web1"
}
$folder4 = new-object -TypeName psobject -Property @{
Name = "folder4"
List = "DocLib2"
Site = "Web1"
}
$folder5 = new-object -TypeName psobject -Property @{
Name = "folder5"
List = "DocLib2"
Site = "Web1"
}
$folder6 = new-object -TypeName psobject -Property @{
Name = "folder6"
List = "DocLib2"
Site = "Web1"
}
$site1 = new-object -TypeName psobject -Property @{
Site = "Web1"
}
$list1 = new-object -TypeName psobject -Property @{
Name = "DocLib1"
Site = "Web1"
}
$list2 = new-object -TypeName psobject -Property @{
Name = "DocLib2"
Site = "Web1"
}
$lists = @($list1,$list2)
$folders = @($folder1, $folder2, $folder3, $folder4, $folder5, $folder6)
$temp = @("Web1","DocLib1","DocLib2","folder1","folder2","folder3","folder4","folder5","folder6")
$xmldoc = @"
<directedgraph>
<page>
<renderoptions
usedynamicconnectors="true"
scalingfactor="20" />
<shapes>
</shapes>
<connectors>
</connectors>
</page>
</directedgraph>
"@
$xmldoc | Out-File -FilePath C:\temp\directedGraphModelSharepointSample.xml -Force
$modelFile = Get-Item -Path C:\temp\directedGraphModelSharepointSample.xml
$model = Import-VisioModel -FileName $modelFile.FullName
$nodes = $temp
$stencil = "basic_u.vssx"
$master = "Circle"
foreach($node in $nodes)
{
$model.Layouts.AddNode($node, $node, $stencil, $master) | Out-Null
}
foreach($list in $lists) {
$model.Layouts.addEdge($lists.IndexOf($list), $list.Site, $list.name, "", 'curved') | Out-Null
foreach ($folder in $folders) {
$model.Layouts.AddEdge($folders.IndexOf($folder) + $lists.count, $folder.list, $folder.name, "", 'curved') | Out-Null
}
New-VisioApplication
Out-VisioApplication($model)
@pstakuu
Copy link
Author

pstakuu commented Feb 4, 2021

You can comment! ha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment