Tìm kiếm trang web

Thay đổi loại nội dung của các mục hiện có trong SharePoint bằng PowerShell


Yêu cầu:
Chúng tôi có một thư viện tài liệu hiện có với hàng trăm tài liệu đề xuất Bán hàng trong đó. Để thực thi tiêu chuẩn hóa, nhóm bán hàng đã tạo một loại nội dung, “Đề xuất bán hàng”. Chúng tôi nhận được yêu cầu thay đổi loại nội dung của tất cả tài liệu hiện có được lưu trữ trong một thư viện tài liệu cụ thể với loại nội dung mặc định “Tài liệu”. Nói cách khác, tất cả các tài liệu bây giờ cần được gán một loại nội dung mới, “Đề xuất bán hàng”.

Làm cách nào để thay đổi loại nội dung của Mục (tài liệu) hiện có trong SharePoint?

Bạn có thể thay đổi loại nội dung của các mục hiện có bằng cách truy cập trang thuộc tính chỉnh sửa của mục cụ thể và chuyển đổi trường “Loại nội dung”.

Mặc dù việc thay đổi kiểu nội dung của các mục hiện có trong SharePoint tương đối dễ dàng và đơn giản, nhưng bạn không muốn xem qua từng tài liệu trong thư viện tài liệu và gán kiểu nội dung mới cho nó theo cách thủ công, vì việc này sẽ tốn thời gian. , phải không?

Chà, chúng ta hãy sử dụng PowerShell để thực hiện việc này nhanh chóng và dễ dàng! Tập lệnh này lặp qua tất cả các tài liệu được lưu trữ trong thư viện tài liệu nhất định, kiểm tra kiểu nội dung của từng tài liệu và nếu đó là một kiểu nội dung cụ thể thì nó sẽ thay thế kiểu nội dung cũ bằng kiểu nội dung mới.

Trước khi chạy tập lệnh này, trước tiên hãy thêm loại nội dung mới vào thư viện của bạn! Tìm tập lệnh của tôi: Thêm Loại Nội dung vào Thư viện SharePoint bằng PowerShell

Tập lệnh PowerShell để thay đổi loại nội dung mục trong SharePoint


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Custom PowerShell Function to switch Content type of all items stored in a SharePoint library
Function Change-ItemContentType {
    param(
        [Microsoft.SharePoint.SPWeb]$Web = $(throw "Please provide the 'Web' Parameter!"),
        [string]$ListName = $(throw "Please provide the 'ListName' Parameter!"),
        [string]$OldContentTypeName = $(throw "Please provide the 'OldContentTypeName' Parameter!"),
        [string]$NewContentTypeName = $(throw "Please provide the 'NewContentTypeName' Parameter!")
    )    
 
    #Get the list
    $List = $Web.Lists[$ListName]

    #Get the new content type
    $NewContentType = $List.ContentTypes[$NewContentTypeName]
 
    #Checkin any checked out file 
    foreach($item in $list.Items)
    {
        if($item.File.CheckOutStatus -ne "None")
        {
            #check file in            
            $item.File.CheckIn("Checked In By Administrator") 
            write-host "Checked-out file checked-in on item: "$item.id
        }
    }

    #Iterate through each item in the list 
    foreach($item in $list.Items)
    {
        if($item.ContentType.Name -eq $OldContentTypeName)
        {        
            #Change the content type
            $item.File.CheckOut()
            $item["ContentTypeId"] = $NewContentType.Id
            $item.SystemUpdate()
            $item.File.CheckIn("Content type changed to " + $NewContentType.Name, 1)
            Write-host "Content type changed for item: "$item.id
        }
    }
}

#Variables for processing
$WebURL ="https://sales.crescent.com"
$ListName ="Q1 Sales Proposals"
$ContentTypeName ="Sales Proposal"

#Get the Web and List
$Web = Get-SPWeb $WebURL
$List = $Web.lists.TryGetList($ListName)

if($list -ne $null)
{
    #Call the function to add content type
    Change-ItemContentType $web $list "document" "Sales Proposal"
}

Điều này sẽ thay đổi loại nội dung cũ “tài liệu” của tất cả các tài liệu thành loại nội dung mới, ‘Đề xuất bán hàng’. Lần tới, khi người dùng chỉnh sửa tài liệu, họ sẽ được nhắc nhập các trường bắt buộc từ loại nội dung mới.

Đây là một bài đăng khác dành cho SharePoint Online: PowerShell dành cho SharePoint Online để thay đổi loại nội dung

Bài viết liên quan