Creating SharePoint Lists with PowerShell PnP: A Guide to Sample Data Generation
In the realm of SharePoint development, the PowerShell PnP (Patterns and Practices) module stands out as a powerful tool for automating and managing SharePoint environments. It simplifies tasks such as creating lists, adding fields, and populating data, enabling developers to streamline their workflows effectively. This article will demonstrate how to create various sales lists for different products using PowerShell PnP scripts, highlighting the significance of using sample data to simulate real-world scenarios.
Utilizing sample data is crucial in SharePoint development for several reasons:
- Testing and Validation: Sample data allows developers to test their solutions in a controlled environment, ensuring that all features work as expected before deployment.
- User Training: Using realistic sample data helps end users familiarize themselves with the system, making training sessions more effective.
- Performance Benchmarking: Having sample data aids in assessing the performance of custom solutions and identifying potential bottlenecks.
- Documentation: Examples with sample data can serve as references in documentation, helping both current and future developers understand the system’s functionality better.
Sample Scripts for Creating Sales Lists
The following PowerShell scripts demonstrate how to create various sales lists for different product categories, including Coffee Machines, Notebooks, Chairs, and Tables. Each script includes fields for monthly sales data populated with random values for simulation purposes.
1. Sales List for Coffee Machines
File Name: Coffee_Machine_Sales.ps1
# Create a sales list for Coffee Machines
New-PnPList -Title "Coffee Machine Sales" -Template GenericList -OnQuickLaunch
Add-PnPField -List "Coffee Machine Sales" -DisplayName "Product Name" -InternalName "ProductName" -Type Text
# Add columns for each month
$months = @("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
foreach ($month in $months) {
$price = Get-Random -Minimum 100 -Maximum 2000
$sales = Get-Random -Minimum [math]::Ceiling($price * 0.1) -Maximum [math]::Ceiling($price * 0.3)
Add-PnPField -List "Coffee Machine Sales" -DisplayName "$month (Sales)" -InternalName "$month" -Type Number
}
# Add example products
$products = @("Espresso Machine", "Drip Coffee Maker", "French Press", "Coffee Maker", "Electric Coffee Pot")
foreach ($product in $products) {
Add-PnPListItem -List "Coffee Machine Sales" -Values @{"ProductName" = $product; "January" = $sales; "February" = $sales; "March" = $sales; "April" = $sales; "May" = $sales; "June" = $sales; "July" = $sales; "August" = $sales; "September" = $sales; "October" = $sales; "November" = $sales; "December" = $sales}
}
2. Sales List for Notebooks
File Name: Notebook_Sales.ps1
# Create a sales list for Notebooks
New-PnPList -Title "Notebook Sales" -Template GenericList -OnQuickLaunch
Add-PnPField -List "Notebook Sales" -DisplayName "Product Name" -InternalName "ProductName" -Type Text
# Add columns for each month
$months = @("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
foreach ($month in $months) {
$price = Get-Random -Minimum 1000 -Maximum 5000
$sales = Get-Random -Minimum [math]::Ceiling($price * 0.05) -Maximum [math]::Ceiling($price * 0.15)
Add-PnPField -List "Notebook Sales" -DisplayName "$month (Sales)" -InternalName "$month" -Type Number
}
# Add example products
$products = @("Gaming Laptop", "Ultrabook", "Office Laptop", "2-in-1 Laptop", "Educational Laptop")
foreach ($product in $products) {
Add-PnPListItem -List "Notebook Sales" -Values @{"ProductName" = $product; "January" = $sales; "February" = $sales; "March" = $sales; "April" = $sales; "May" = $sales; "June" = $sales; "July" = $sales; "August" = $sales; "September" = $sales; "October" = $sales; "November" = $sales; "December" = $sales}
}
3. Sales List for Chairs
File Name: Chair_Sales.ps1
# Create a sales list for Chairs
New-PnPList -Title "Chair Sales" -Template GenericList -OnQuickLaunch
Add-PnPField -List "Chair Sales" -DisplayName "Product Name" -InternalName "ProductName" -Type Text
# Add columns for each month
$months = @("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
foreach ($month in $months) {
$price = Get-Random -Minimum 50 -Maximum 1000
$sales = Get-Random -Minimum [math]::Ceiling($price * 0.05) -Maximum [math]::Ceiling($price * 0.25)
Add-PnPField -List "Chair Sales" -DisplayName "$month (Sales)" -InternalName "$month" -Type Number
}
# Add example products
$products = @("Office Chair", "Gaming Chair", "Dining Chair", "Beach Chair", "Wheelchair")
foreach ($product in $products) {
Add-PnPListItem -List "Chair Sales" -Values @{"ProductName" = $product; "January" = $sales; "February" = $sales; "March" = $sales; "April" = $sales; "May" = $sales; "June" = $sales; "July" = $sales; "August" = $sales; "September" = $sales; "October" = $sales; "November" = $sales; "December" = $sales}
}
4. Sales List for Tables
File Name: Table_Sales.ps1
# Create a sales list for Tables
New-PnPList -Title "Table Sales" -Template GenericList -OnQuickLaunch
Add-PnPField -List "Table Sales" -DisplayName "Product Name" -InternalName "ProductName" -Type Text
# Add columns for each month
$months = @("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
foreach ($month in $months) {
$price = Get-Random -Minimum 100 -Maximum 2000
$sales = Get-Random -Minimum [math]::Ceiling($price * 0.1) -Maximum [math]::Ceiling($price * 0.3)
Add-PnPField -List "Table Sales" -DisplayName "$month (Sales)" -InternalName "$month" -Type Number
}
# Add example products
$products = @("Office Table", "Dining Table", "Coffee Table", "Computer Table", "Bistro Table")
foreach ($product in $products) {
Add-PnPListItem -List "Table Sales" -Values @{"ProductName" = $product; "January" = $sales; "February" = $sales; "March" = $sales; "April" = $sales; "May" = $sales; "June" = $sales; "July" = $sales; "August" = $sales; "September" = $sales; "October" = $sales; "November" = $sales; "December" = $sales}
}
Summary of Commands Used
- Create a List:
New-PnPList -Title "List Name" -Template GenericList -OnQuickLaunch
- Add a Field:
Add-PnPField -List "List Name" -DisplayName "Field Name" -InternalName "InternalName" -Type FieldType
- Add an Item:
Add-PnPListItem -List "List Name" -Values @{ "FieldName" = "Value" }
- Get a Random Value:
Get-Random -Minimum $min -Maximum $max
These scripts create various sales lists for different categories of products, each with monthly sales data generated randomly. By leveraging PowerShell PnP, developers can automate list creation and data population, ultimately enhancing productivity and ensuring a robust SharePoint environment.

Leave a comment