Func_Move-OneDriveItem.ps1
################################################################################ # Author : Antony Onipko # Copyright : (c) 2016 Antony Onipko. All rights reserved. ################################################################################ # This work is licensed under the # Creative Commons Attribution-ShareAlike 4.0 International License. # To view a copy of this license, visit # https://creativecommons.org/licenses/by-sa/4.0/ ################################################################################ Function Move-OneDriveItem { <# .SYNOPSIS Move a OneDrive item from one parent to another. .EXAMPLE "Documents/file.pdf" | Move-OneDriveItem "destination/directory" .EXAMPLE Move-OneDriveItem -ItemID "85B75A4CE0397EE!1492" -destination "destination/directory" .EXAMPLE Move-OneDriveItem "Documents/DirToMove" "new/parent" #> [CmdletBinding(DefaultParameterSetName='Item Path')] [Alias('odmv', 'odmove')] [OutputType([PsObject])] Param ( # API resource path. [Parameter(Mandatory=$False, Position=1, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, ParameterSetName='Item Path')] [Alias('ApiUrl', 'Resource')] [string]$Path, # API item ID. [Parameter(Mandatory=$True, Position=1, ValueFromPipelineByPropertyName=$True, ParameterSetName='Item ID')] [Alias('id')] [string]$ItemId, # The path to the destination directory / file. [Parameter(Mandatory=$True, Position=2)] [string]$Destination ) Process { if ($ItemId) { $p = joinPath $PSOD.drive.itemRoot $ItemId } else { $p = joinPath $PSOD.drive.pathRoot $Path } Write-Verbose "Sending request to '$p'" $body = [ordered]@{ parentReference = @{ path = "/" + (joinPath $PSOD.drive.pathRoot $Destination) } } | ConvertTo-Json Write-Verbose "Request body:`n$body" $rsp = Invoke-OneDriveApiCall -Path $p ` -Method PATCH ` -Body $body ` -AdditionalRequestHeaders @{ Prefer = "respond-async" } if ($rsp) { Write-Output $rsp | newOneDriveItem } } } Export-ModuleMember -Function 'Move-OneDriveItem' -Alias 'odmv', 'odmove' |