Skip to main content
Added more detail about how to use the solution
Source Link

Here you go:

Function Do-WhatOPAskedFor
{
    param
    (
        [Microsoft.SharePoint.SPList] $list
    )

    # Please note that this is a bad way of getting all items from the list!
    $items = $list.Items
    $items | Align-DateFields "Modified" "Date Last Saved"
}

Function Align-DateFields
{
    param
    (       
        [string] $dateModifiedFieldName,
        [string] $dateLastSavedFieldName,
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [Microsoft.SharePoint.SPListItem] $item
    )

    begin {}
    process
    {
        [DateTime]$dateLastSaved = $item[$dateLastSavedFieldName];
        $item[$dateModifiedFieldName] = $dateLastSaved;
        $item.Update();
    }
    end {}
}

Do-WhatOPAskedFor will do what you asked for; I'm just bad at naming functions. What it does is takes a SharePoint list, enumerates its items, and sends each item to be processed by a function. The function Align-DateFields takes a SharePoint list item, extracts what's in the specified field, and saves it to another field.

Let me know if you need any further details!

EDIT:

Here's some code to load up the SharePoint list and pass it to the function above:

# Do this if you can load the SharePoint module (e.g., are in a SharePoint Management Shell)
$web = Get-SPWeb http://yourwebsitehere;
$list = $web.Lists["Your list title here"];
Do-WhatOPAskedFor $list;
$web.Dispose();

# Do this if you only have a regular PowerShell shell:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | Out-Null;
$site = New-Object Microsoft.SharePoint.SPSite("http://yoursitecollectionhere");
$web = $site.AllWebs | Where { $_.Title -eq "Your site title here" } | Select -First 1
$list = $web.Lists["Your list title here"];
Do-WhatOPAskedFor $list;
$site.Dispose();

In the first one, we use the functions in the SharePoint PowerShell module to grab the SPWeb, extract the SPList and pass it to the function. In the second, we have to load the Microsoft.SharePoint assembly, instantiate an SPSite object which contains the SPWeb, grab the SPWeb, extract the SPList, and pass it to the function.

Here you go:

Function Do-WhatOPAskedFor
{
    param
    (
        [Microsoft.SharePoint.SPList] $list
    )

    # Please note that this is a bad way of getting all items from the list!
    $items = $list.Items
    $items | Align-DateFields "Modified" "Date Last Saved"
}

Function Align-DateFields
{
    param
    (       
        [string] $dateModifiedFieldName,
        [string] $dateLastSavedFieldName,
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [Microsoft.SharePoint.SPListItem] $item
    )

    begin {}
    process
    {
        [DateTime]$dateLastSaved = $item[$dateLastSavedFieldName];
        $item[$dateModifiedFieldName] = $dateLastSaved;
        $item.Update();
    }
    end {}
}

Do-WhatOPAskedFor will do what you asked for; I'm just bad at naming functions. What it does is takes a SharePoint list, enumerates its items, and sends each item to be processed by a function. The function Align-DateFields takes a SharePoint list item, extracts what's in the specified field, and saves it to another field.

Let me know if you need any further details!

Here you go:

Function Do-WhatOPAskedFor
{
    param
    (
        [Microsoft.SharePoint.SPList] $list
    )

    # Please note that this is a bad way of getting all items from the list!
    $items = $list.Items
    $items | Align-DateFields "Modified" "Date Last Saved"
}

Function Align-DateFields
{
    param
    (       
        [string] $dateModifiedFieldName,
        [string] $dateLastSavedFieldName,
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [Microsoft.SharePoint.SPListItem] $item
    )

    begin {}
    process
    {
        [DateTime]$dateLastSaved = $item[$dateLastSavedFieldName];
        $item[$dateModifiedFieldName] = $dateLastSaved;
        $item.Update();
    }
    end {}
}

Do-WhatOPAskedFor will do what you asked for; I'm just bad at naming functions. What it does is takes a SharePoint list, enumerates its items, and sends each item to be processed by a function. The function Align-DateFields takes a SharePoint list item, extracts what's in the specified field, and saves it to another field.

Let me know if you need any further details!

EDIT:

Here's some code to load up the SharePoint list and pass it to the function above:

# Do this if you can load the SharePoint module (e.g., are in a SharePoint Management Shell)
$web = Get-SPWeb http://yourwebsitehere;
$list = $web.Lists["Your list title here"];
Do-WhatOPAskedFor $list;
$web.Dispose();

# Do this if you only have a regular PowerShell shell:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | Out-Null;
$site = New-Object Microsoft.SharePoint.SPSite("http://yoursitecollectionhere");
$web = $site.AllWebs | Where { $_.Title -eq "Your site title here" } | Select -First 1
$list = $web.Lists["Your list title here"];
Do-WhatOPAskedFor $list;
$site.Dispose();

In the first one, we use the functions in the SharePoint PowerShell module to grab the SPWeb, extract the SPList and pass it to the function. In the second, we have to load the Microsoft.SharePoint assembly, instantiate an SPSite object which contains the SPWeb, grab the SPWeb, extract the SPList, and pass it to the function.

Source Link

Here you go:

Function Do-WhatOPAskedFor
{
    param
    (
        [Microsoft.SharePoint.SPList] $list
    )

    # Please note that this is a bad way of getting all items from the list!
    $items = $list.Items
    $items | Align-DateFields "Modified" "Date Last Saved"
}

Function Align-DateFields
{
    param
    (       
        [string] $dateModifiedFieldName,
        [string] $dateLastSavedFieldName,
        [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
        [Microsoft.SharePoint.SPListItem] $item
    )

    begin {}
    process
    {
        [DateTime]$dateLastSaved = $item[$dateLastSavedFieldName];
        $item[$dateModifiedFieldName] = $dateLastSaved;
        $item.Update();
    }
    end {}
}

Do-WhatOPAskedFor will do what you asked for; I'm just bad at naming functions. What it does is takes a SharePoint list, enumerates its items, and sends each item to be processed by a function. The function Align-DateFields takes a SharePoint list item, extracts what's in the specified field, and saves it to another field.

Let me know if you need any further details!