最近有个项目需要在在windows计划中使用powershell脚本备份sharepoint2010网站集,打开sharepoint的powershell执行命令管理界面的属性
查看:
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -NoExit " & ' C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\CONFIG\POWERSHELL\Registration\\sharepoint.ps1 ' "
先看看PowerShell.exe 的帮助
了解如上信息。我们来编写用powershell备份网站集的脚本。代码如下:
#//************************************************************* #//编辑人:XXX #//编辑单位:XXX #//编辑作用:备份所有站点,按照周1到周日创建7个文件夹 #//编制时间:2013.08.26 #//************************************************************* #**************************************************默认C#盘下,需要改动如下参数 $Location = "d:\" #网站集URL $siteUrl=http://XX.XXX.com #************************************************** #根目录名称 $RootName="EPBackUp" #子文件夹 $folderName = (Get-Date).DayOfWeek #全路径 $folderPath = $Location + "\" + $RootName #如果根文件夹不存在。则创建根文件夹 If((Test-Path $Location) -eq $False) { Write-Host "开始创建根文件夹...---------------" New-Item -path $Location -name $RootName -itemType "directory" Write-Host "创建根文件夹完毕...---------------" } #如果星期文件夹不存在,则创建星期文件夹 $weekPath =$folderPath + "\" + $folderName If((Test-Path $weekPath) -eq $False) { Write-Host "正在创建周期文件夹......." New-Item -path $folderPath -name $folderName -itemType "directory" Write-Host "创建周期文件夹完毕...---------------" } #****************************************************************** #添加如下2行代码为windows计划执行使用,否则windows计划无法执行ps1 $MySnapin="Microsoft.SharePoint.PowerShell" if ( (Get-PSSnapin -Name $MySnapin -ErrorAction SilentlyContinue) -eq $null ) { Write-Host "正在导入sharepoint的commandlet...---------------" Add-PSSnapin $MySnapin Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Force Write-Host "导入的sharepoint的commandlet完毕...---------------" } #****************************************************************** #整个文件夹全路径 $BackupFilePath = $folderPath + "\" + $folderName #公司门户文件夹 $epName = $BackupFilePath + "\SPSite_EP.bak" Write-Host "开始备份公司门户...---------------" backup-SPSite $siteUrl -Path $epName -force Write-Host "备份公司门户完毕...---------------" #学习与发展门户文件夹 $KMSiteUrl = $siteUrl +"/km" $KMName = $BackupFilePath + "\SPSite_KM.bak" Write-Host "开始备份学习与发展...---------------" backup-SPSite $KMSiteUrl -Path $KMName -force Write-Host "备份学习与发展完毕...---------------" #协作空间文件夹 $WorkSiteUrl = $siteUrl +"/workspace" $WorkName = $BackupFilePath + "\SPSite_WorkSpace.bak" Write-Host "开始备份协作空间...---------------" backup-SPSite $WorkSiteUrl -Path $WorkName -force Write-Host "备份协作空间完毕...---------------"
说明:
Add-PSSnapin, alias 为 asnp
这个没有什么难理解的地方。Java里面有import来导入类库,同样C++里面有using
来导入库。在powershell
里面有add-pssnapin来导入内置之外的commandlets。比如你自己写了一个commandlet用来计算及验证MD5摘要,怎么在console下用你自己写的commandlet呢(现在还没有内置的算MD5的commandlet,只能用.NET里面的库)?让add-pssnapin来帮助你。
语法
Add-PSSnapin [-name] <string[]> [-passThru]
[<CommonParameters>]
例子1
add-PSSnapIn
Microsoft.Exchange,Microsoft.Windows.AD
将Microsoft.Exchange
和Microsoft.Windows.AD
snappin添加到当前console中去。
这两个snappin中的所有类,函数只在当前console中有效。如果想要当前console的snapin在后面可用,请看后面的export-console说明.
例子2
get-pssnapin
-registered | add-pssnapin -passthru
将所有注册过的snapin加入到当前会话中去。
创建windows计划
注意点:
#******************************************************************
#添加如下2行代码为windows计划执行使用,否则windows计划无法执行ps1
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Force
#******************************************************************
创建基本任务
1)、程序脚本:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
2)、添加参数:-NonInteractive "c:\BackUp.ps1"
我们测试下效果图: