Skip to content

Instantly share code, notes, and snippets.

@crshnbrn66
Last active January 9, 2017 19:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save crshnbrn66/88578228ce45f6c316516fc05dd7f160 to your computer and use it in GitHub Desktop.
Save crshnbrn66/88578228ce45f6c316516fc05dd7f160 to your computer and use it in GitHub Desktop.
param
(
[String]
[Parameter(Mandatory)]
$SourceFolder,
[String]
$Destination ,
[string]
$AdminUserName,
[string]
$AdminPassword
)
$creds = $AdminPassword | ConvertTo-SecureString -AsPlainText -Force
$SPdevcredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $AdminUserName, $creds
#invoke-webrequest -uri $url -Credential $SPdevcredentials
if($MyInvocation.MyCommand.Path)
{
$scriptpath = $MyInvocation.MyCommand.Path
$d = Split-Path $scriptpath
write-output -InputObject "Script Directory -->$D"
pushd
cd $d
import-module .\SharePointPnPPowerShellOnline -DisableNameChecking -Force
popd
}
else{import-module .\SharePointPnPPowerShellOnline -DisableNameChecking -Force}
$u = $null
$isurl = [system.uri]::TryCreate($Destination,[system.urikind]::RelativeOrAbsolute,[ref]$u)
if(($U.Scheme -eq 'http' ) -or ($u.Scheme -eq 'https'))
{
if(get-command connect-pnponline -erroraction ignore)
{
$url = $u.AbsoluteUri
do #for($i = 1; $i -le $u.Segments.count; $i++)
{
try
{
connect-pnponline -Url $url -Credentials $SPdevcredentials -CreateDrive -ErrorAction Ignore
}
catch
{
"Error was $_"
$line = $_.InvocationInfo.ScriptLineNumber
"Error was in Line $line"
}
$i++
$url = $U.AbsoluteUri -replace (($u.segments | select -last $i ) -join ''), ''
}While((-not (get-psdrive -name spo -ErrorAction Ignore)) -and ($i -ne $u.segments.count) )
if(Get-PSDrive -Name spo -ErrorAction Ignore)
{
Write-Output "Drives = $((Get-PSDrive).name -join ',')"
Write-Output "Site root = $((get-pnpsite).url)"
if ($sourcefolder.EndsWith('\')){$sourcefolder = $sourcefolder.trimend('\')}
$apps= Get-ChildItem -Path "$SourceFolder"
Write-Output "Application to Deploy Filename: $($apps.fullname)"
foreach($app in $apps)
{
pushd
cd ($app ).directory
Add-PnPFile -Path $app.fullname -Folder ($Destination -replace (get-pnpsite).url, '')
write-output "uploaded $($app.fullname) to $destination"
popd
}
}
else
{ Throw "Cannot Connect to Sharepoint Online - $destination check username / password / url"}
}
}
else
{
throw "$destination url must be an http or https address"
}
@crshnbrn66
Copy link
Author

crshnbrn66 commented Jan 9, 2017

updated with better error logic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment