запуск команды PowerShell SP 2010 - PullRequest
2 голосов
/ 08 декабря 2011

Я пытаюсь создать карту сайта с помощью команды PowerShell из этого примера: http://blogs.msdn.com/b/opal/archive/2010/04/13/generate-sharepoint-2010-sitemap-with-windows-powershell.aspx

Мои действия: я скопировал код в файл с именем New-SPSiteMap

Я открылPowerShell и написал

New-SPSiteMap –Url http://centerportal –SavePath C:\inetpub\wwwroot\wss\VirtualDirectories\80\sitemap.xml

Я получаю ошибку:

The term 'New-SPSiteMap' is not recognized as the name of a cmdlet, 
function, script file, or operable program. Check the spelling of the name, 
or if a path was included, verify that the path is correct and try again.
At line:1 char:14
+ New-SPSiteMap <<<<  -Url http://mossdev2010  -SavePath C:\inetpub\wwwroot\wss\VirtualDirectories\80\sitemap.xml
+ CategoryInfo          : ObjectNotFound: (New-SPSiteMap:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

1 Ответ

2 голосов
/ 08 декабря 2011

Для того, чтобы была доступна функция New-SPSiteMap, необходимо выполнить скрипт, содержащий функцию:

& .\New-SPSiteMap.ps1
New-SPSiteMap –Url http://centerportal –SavePath C:\inetpub\wwwroot\wss\VirtualDirectories\80\sitemap.xml

Аллитеративно, вы можете превратить скрипт PowerShell в «функцию», которая вызывается следующим образом:

.\New-SPSiteMap.ps1 -Url http://centerportal –SavePath C:\inetpub\wwwroot\wss\VirtualDirectories\80\sitemap.xml

Все, что вам нужно сделать, это удалить объявление функции function New-SPSiteMap:

param($SavePath="C:\inetpub\wwwroot\wss\VirtualDirectories\80\SiteMap.xml", $Url="http://sharepoint")

function New-Xml
{
    param($RootTag="urlset",$ItemTag="url", $ChildItems="*", $SavePath="C:\SiteMap.xml")

    Begin {
        $xml="<?xml version=""1.0"" encoding=""UTF-8""?>
        <urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">"
    }
    Process {
        $xml += " <$ItemTag>"
        foreach ($child in $_){
        $Name = $child
        $xml += " <$ChildItems>$url/$child</$ChildItems>"
    }
        $xml += " </$ItemTag>"
    }
    End {
        $xml += "</$RootTag>"
        $xmltext=[xml]$xml
        $xmltext.Save($SavePath)
    }
}

$web = Get-SPWeb $url
$list = $web.Lists | ForEach-Object -Process {$_.Items} | ForEach-Object -Process {$_.url.Replace(" ","%20")}

# excludes directories you don’t want in sitemap. you can put multiple lines here:

$list = $list | ? {$_ -notmatch "_catalogs"} 
$list = $list | ? {$_ -notmatch "Reporting%20Templates"} 
$list = $list | ? {$_ -notmatch "Reporting%20Metadata"} 
$list | New-Xml -RootTag urlset -ItemTag url -ChildItems loc -SavePath $SavePath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...