This is how you can rename a SPFolder. There is no need to use MoveTo() as suggested by others.
The user has to have rights to do it, or enclose the whole thing inside a
var siteId = "Guid of my site";
var webUrl= "Server relative path to my web";
SPSecurity.RunWithElevatedPrivileges(delegate(){
using (SPSite elevatedSite = new SPSite(siteId))
{
using (SPWeb elevatedWeb = elevatedSite.OpenWeb(webUrl))
{
string requestFolderUrl = webUrl+ "/MYLIST/OldFolderName";
SPFolder requestFolder = elevatedWeb.GetFolder(requestFolderUrl);
if (requestFolder.Exists)
{
requestFolderItem[SPBuiltInFieldId.Title] = "NewName"; //not really needed for renaming
//requestFolderItem[SPBuiltInFieldId.BaseName] = "NewName"; //this Fails.don't know why
requestFolderItem["BaseName"] = "NewName"; //this Works!
//don't want to update the Modified time nor the modified by Info
//If you want to modify this info use Update, and avoid being in a RunWithElevatedPrivileges
///because else you would have the System User registered
requestFolderItem.SystemUpdate(false);
}
}
}
}
Tuesday, February 28, 2012
Thursday, February 16, 2012
Remove Event Handlers from SPList Powershell
This is how you can delete Event handlers from a SPList
$webUrl= "http://yoursite.com/subsite"
$listName = "myList"
$site = Get-SPSite($siteUrl)
$web = $site.OpenWeb()
$listWithEventHandlers = $web.Lists[$listName]
#you can find out the index of the eventhadler through a selector, or just beeing lazy
#and loop the eventhanlders
$allEvenReceivers = $list.EventReceivers
foreach($ev in $allEvenReceivers )
{
write-host $ev.Name;
}
$index = 0
$eventHandlerToDelete = $listWithEventHandlers.EventReceivers[$index]$eventHandlerToDelete.Delete()
$listWithEventHandlers.Update()
$web.Dispose()
$site.Dispose()
$webUrl= "http://yoursite.com/subsite"
$listName = "myList"
$site = Get-SPSite($siteUrl)
$web = $site.OpenWeb()
$listWithEventHandlers = $web.Lists[$listName]
#you can find out the index of the eventhadler through a selector, or just beeing lazy
#and loop the eventhanlders
$allEvenReceivers = $list.EventReceivers
foreach($ev in $allEvenReceivers )
{
write-host $ev.Name;
}
$index = 0
$eventHandlerToDelete = $listWithEventHandlers.EventReceivers[$index]$eventHandlerToDelete.Delete()
$listWithEventHandlers.Update()
$web.Dispose()
$site.Dispose()
Access MasterPage catalog with Powershell
To acces the Masterpage catalog via Powershell, and then use it as a list the following script might help
if(-not(Get-PSSnapin | Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
clear
$siteUrl = "http://yourserver.com"
$masterPageCatalog = "_catalogs/masterPage"
$site = Get-SPSite $siteUrl
$rootWeb = $site.RootWeb;
$folder = $rootWeb.GetFolder($masterPageCatalog)
$masterPageCatList = $rootWeb.Lists[$folder.ParentListId]
#do some list operations on it
$rootWeb.Dispose()
$site.Dispose()
if(-not(Get-PSSnapin | Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
clear
$siteUrl = "http://yourserver.com"
$masterPageCatalog = "_catalogs/masterPage"
$site = Get-SPSite $siteUrl
$rootWeb = $site.RootWeb;
$folder = $rootWeb.GetFolder($masterPageCatalog)
$masterPageCatList = $rootWeb.Lists[$folder.ParentListId]
#do some list operations on it
$rootWeb.Dispose()
$site.Dispose()
Wednesday, January 25, 2012
Reorder field in existing Contentype withPowershell
if(-not(
Get-PSSnapin | Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
clear
$dirURL = "Url of the Content Type"
$contentTypeName = "ContentTypeName"
$fieldInternalName= "Internal name of the field to reorder"
$field0BasedIndex = 8 #Position on the contentytpe this field is wanted
if($site -ne $null){
$web = $site.RootWeb
if($web -ne $null){
$ct = $web.ContentTypes[$contentTypeName]
if($ct -ne $null){
write-Host "content Type Found" -foregroundcolor green
$fields = New-Object 'System.Collections.Generic.List[string]' ;
[Microsoft.SharePoint.SPFieldLinkCollection]$flinks = $ct.FieldLinks;
#Read all the InternalNames of the FieldLinks into a list
foreach($fieldLink in $flinks){
$fields.Add($ct.Fields[$fieldLink.ID].InternalName);
}
if($fields.Contains($fieldInternalName)){
write-Host "Field found in Content Type" -foregroundcolor green;
$indexFound = $fields.IndexOf($fieldInternalName)
if($indexFound -ne $field0BasedIndex )
{
$fields.RemoveAt($indexFound)
#insert or append the field
if($field0BasedIndex -le $fields.Count -1){
$fields.Insert( $field0BasedIndex,$fieldInternalName)
}
else{
$fields.Add($fieldInternalName);
}
#Add the array to the reorder
$flinks.Reorder($fields.ToArray());
#Update the ContentYpe
$ct.Update($true)
}
}
else{
write-Host "Field not found in Content Type" -foregroundcolor red;
}
}
else{
write-Host "Content type not found" -foregroundcolor red
}
$web.Update()
$web.Dispose();
}
$site.Dispose();
}
Get-PSSnapin | Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
clear
$dirURL = "Url of the Content Type"
$contentTypeName = "ContentTypeName"
$fieldInternalName= "Internal name of the field to reorder"
$field0BasedIndex = 8 #Position on the contentytpe this field is wanted
if($site -ne $null){
$web = $site.RootWeb
if($web -ne $null){
$ct = $web.ContentTypes[$contentTypeName]
if($ct -ne $null){
write-Host "content Type Found" -foregroundcolor green
$fields = New-Object 'System.Collections.Generic.List[string]' ;
[Microsoft.SharePoint.SPFieldLinkCollection]$flinks = $ct.FieldLinks;
#Read all the InternalNames of the FieldLinks into a list
foreach($fieldLink in $flinks){
$fields.Add($ct.Fields[$fieldLink.ID].InternalName);
}
if($fields.Contains($fieldInternalName)){
write-Host "Field found in Content Type" -foregroundcolor green;
$indexFound = $fields.IndexOf($fieldInternalName)
if($indexFound -ne $field0BasedIndex )
{
$fields.RemoveAt($indexFound)
#insert or append the field
if($field0BasedIndex -le $fields.Count -1){
$fields.Insert( $field0BasedIndex,$fieldInternalName)
}
else{
$fields.Add($fieldInternalName);
}
#Add the array to the reorder
$flinks.Reorder($fields.ToArray());
#Update the ContentYpe
$ct.Update($true)
}
}
else{
write-Host "Field not found in Content Type" -foregroundcolor red;
}
}
else{
write-Host "Content type not found" -foregroundcolor red
}
$web.Update()
$web.Dispose();
}
$site.Dispose();
}
Insert new Site Column in existing Contentype with PowerShell
# Check if Snap-in is loaded
if(-not(
Get-PSSnapin | Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"})
) {
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
$dirURL = "Type here the abolute Url to the Sitecollection where the contentytpe is defined"
$contentTypeName = "Traktandum"
$fieldId = [Guid]"{516ae749-c8b4-4a9b-858f-50881aae4165}"
#fieldId mus match the one on the fieldXML
$site = Get-SPSite -Identity $dirURL
if($site -ne $null){
$web = $site.RootWeb
if($web -ne $null){
#Assign fieldXML variable with XML string for site column
$fieldXML = '<Field
Description="$Resources:MyCustom,Field_MyPortalOtherGuest_Description"
DisplayName="$Resources:MyCustom,Field_MyPortalOtherGuest_DisplayName"
Hidden="FALSE"
Name="SomeName"
Title="SomeName"
Required="FALSE"
Sealed ="FALSE"
Sortable="FALSE"
List="UserInfo"
ShowField="ImnName"
Mult="TRUE"
Type="UserMulti"
UserSelectionMode="0"
UserSelectionScope="0"
ID="{516ae749-c8b4-4a9b-858f-50881aae4165}"
Group="$Resources:MyCustom,Field_Group"
StaticName="SomeName" />'
#Add the field to the web
$web.Fields.AddFieldAsXml($fieldXML)
$web.Update()
$field = $web.AvailableFields[$fieldId]
$ct = $web.ContentTypes[$contentTypeName]
if($field -ne $null -and $ct -ne $null){
#Delete any existing Field with that ID from the ContentType
$ct.FieldLinks.Delete($fieldId)
#Update the Contentype includeing childs
$ct.Update($true, $true)
#Creat a new SPFieldLink for that field and insert it to the ContentType
$link = new-object Microsoft.SharePoint.SPFieldLink $field
$ct.FieldLinks.Add($link)
$ct.Update($true, $true)
}
$web.Update()
$web.Dispose()
}
$site.Dispose()
}
if(-not(
Get-PSSnapin | Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"})
) {
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
$dirURL = "Type here the abolute Url to the Sitecollection where the contentytpe is defined"
$contentTypeName = "Traktandum"
$fieldId = [Guid]"{516ae749-c8b4-4a9b-858f-50881aae4165}"
#fieldId mus match the one on the fieldXML
$site = Get-SPSite -Identity $dirURL
if($site -ne $null){
$web = $site.RootWeb
if($web -ne $null){
#Assign fieldXML variable with XML string for site column
$fieldXML = '<Field
Description="$Resources:MyCustom,Field_MyPortalOtherGuest_Description"
DisplayName="$Resources:MyCustom,Field_MyPortalOtherGuest_DisplayName"
Hidden="FALSE"
Name="SomeName"
Title="SomeName"
Required="FALSE"
Sealed ="FALSE"
Sortable="FALSE"
List="UserInfo"
ShowField="ImnName"
Mult="TRUE"
Type="UserMulti"
UserSelectionMode="0"
UserSelectionScope="0"
ID="{516ae749-c8b4-4a9b-858f-50881aae4165}"
Group="$Resources:MyCustom,Field_Group"
StaticName="SomeName" />'
#Add the field to the web
$web.Fields.AddFieldAsXml($fieldXML)
$web.Update()
$field = $web.AvailableFields[$fieldId]
$ct = $web.ContentTypes[$contentTypeName]
if($field -ne $null -and $ct -ne $null){
#Delete any existing Field with that ID from the ContentType
$ct.FieldLinks.Delete($fieldId)
#Update the Contentype includeing childs
$ct.Update($true, $true)
#Creat a new SPFieldLink for that field and insert it to the ContentType
$link = new-object Microsoft.SharePoint.SPFieldLink $field
$ct.FieldLinks.Add($link)
$ct.Update($true, $true)
}
$web.Update()
$web.Dispose()
}
$site.Dispose()
}
Tuesday, June 14, 2011
Swithc DB to Simple Recovery Mode
http://vstoolsforum.com/blogs/sqlserver/archive/2007/05/11/setting-the-recovery-model-of-a-database-to-simple.aspx
Simple and works perfectly.
Simple and works perfectly.
Tuesday, May 3, 2011
GAC (Global Assebly Folder) empty- Trick to reenable
As my work is, I have to deploy x-times some assembly in my GAC and test it.
Well once in a while my assembly folder just seems empty, And then I can't build / deploy my solution anymore.
Here is the trick: (It is not mine.. but the more places it is published, the easier you guy find it:)
Start your windows services management console (services.msc) and restart the Indexing Service and everything is back to normal.!
Cool... once agian.. it was not our fault... we where just working!
Well once in a while my assembly folder just seems empty, And then I can't build / deploy my solution anymore.
Here is the trick: (It is not mine.. but the more places it is published, the easier you guy find it:)
Start your windows services management console (services.msc) and restart the Indexing Service and everything is back to normal.!
Cool... once agian.. it was not our fault... we where just working!
Subscribe to:
Posts (Atom)