This commit is contained in:
Kawawete 2024-10-17 09:33:53 +02:00
commit 09d5e0f281
1 changed files with 87 additions and 49 deletions

View File

@ -12,6 +12,17 @@
# Source : C:\Users\SebastienQUEROL\source\repos\sharepointmover-gui\Form1.Designer.cs
################################################################################
###############Thread Setup
$Global:syncHash = [hashtable]::Synchronized(@{})
$newRunspace =[runspacefactory]::CreateRunspace()
$newRunspace.ApartmentState ="STA"
$newRunspace.ThreadOptions ="ReuseThread"
$newRunspace.Open()
$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
###########################
##Aucune foutre idée de ce qu'est cense faire ce morceau de code, ca a été généré par le createur de forms
# function Get-ScriptDirectory
# { #Return the directory name of this script
@ -387,35 +398,43 @@ $FMain.Text = "SharePoint Utils GUI"
##Lister les sites dans les comboBoxes
#### On lance le ScriptBlock dans un runspace au clic du bouton BlistSites
$BlistSites.Add_Click({
# On vide la variable pnpConnection pour ne pas avoir de faux positifs
$pnpConnection = $Null
$newRunspace =[runspacefactory]::CreateRunspace()
$newRunspace.ApartmentState ="STA"
$newRunspace.ThreadOptions ="ReuseThread"
$newRunspace.Open()
$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
# On stocke la dernière connexion PnP
$pnpConnection = Get-PnPConnection | Out-String
$BlistSitesRunSpace = [PowerShell]::Create().AddScript({
# À améliorer, mais pour l'instant, ça devrait passer
if (-not ([string]::IsNullOrEmpty($pnpConnection))) {
$CBdestSite.Items.Clear()
$CBsourceSite.Items.Clear()
$sitesList = Get-PnPTenantSite | Where-Object -Property Template -NotIn (
"SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0",
"POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1", 'EHS#1', 'POINTPUBLISHINGTOPIC#0'
) | Select-Object url
$LresultsMove.Items.Clear()
foreach ($siteUrl in $sitesList) {
$siteUrl -match "@{Url=(?<content>.*)}"
$siteUrlClean = $matches["content"]
$CBsourceSite.Items.Add([string]$siteUrlClean)
$CBdestSite.Items.Add([string]$siteUrlClean)
}
} elseif ([string]::IsNullOrEmpty($pnpConnection)) {
$LresultsMove.Items.Clear()
$LresultsMove.Items.Add("Connectez-vous au tenant d'abord")
} else {
$LresultsMove.Items.Clear()
$LresultsMove.Items.Add("Connectez-vous au tenant d'abord")
}
#On vide la variable pnpConnection pour ne pas avoir de faux positifs
$pnpConnection=$Null
#On stocke la derniere connection PnP
$pnpConnection = Get-PnPConnection | Out-string
#A ameliorer, mais pour l'instant, ca devrait passer
if(-not ([string]::IsNullOrEmpty($pnpConnection))){
$CBdestSite.Items.Clear()
$CBsourceSite.Items.Clear()
$sitesList = $null
$sitesList = Get-PnPTenantSite | Where-Object -Property Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1", 'EHS#1','POINTPUBLISHINGTOPIC#0') | Select-Object url
$LresultsMove.Items.Clear()
foreach($siteUrl in $sitesList){
$siteUrl -match "@{Url=(?<content>.*)}"
$siteUrlClean = $matches["content"]
$CBsourceSite.Items.Add([string]$siteUrlClean)
$CBdestSite.Items.Add([string]$siteUrlClean)
}
}
elseif(([string]::IsNullOrEmpty($pnpConnection))){
$LresultsMove.Items.Clear()
$LresultsMove.Items.Add("Connectez-vous au tenant d'abord")
}
else{
$LresultsMove.Items.Clear()
$LresultsMove.Items.Add("Connectez-vous au tenant d'abord")
}
})
$BlistSitesRunSpace.PowerShell.Runspace = $newRunspace
$BlistSitesRunSpace.Thread = $BlistSitesRunSpace.PowerShell.BeginInvoke()
})
@ -434,6 +453,13 @@ $BlistSites.Add_Click({
$Bgo.Add_Click({
$newRunspace =[runspacefactory]::CreateRunspace()
$newRunspace.ApartmentState ="STA"
$newRunspace.ThreadOptions ="ReuseThread"
$newRunspace.Open()
$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
$copySPRunspace.PowerShell = [PowerShell]::Create().AddScript({
$destSite = $CBdestSite.Text
$sourceSite = $CBsourceSite.Text
$sourceSite = $sourceSite -Replace '[A-Za-z]+://([A-Za-z]+(\.[A-Za-z]+)+)',''
@ -442,6 +468,9 @@ $Bgo.Add_Click({
$jobCopyPending = Copy-PnPFile -SourceUrl "$sourceSite" -TargetUrl "$destSite" -Force -OverwriteIfAlreadyExists
$jobStatus = Receive-PnPCopyMoveJobStatus -Job $jobCopyPending -Wait
Write-Output $jobStatus
})
$copySPRunspace.PowerShell.Runspace = $newRunspace
$copySPRunspace.Thread = $copySPRunspace.PowerShell.BeginInvoke()
})
@ -455,29 +484,38 @@ $tenantURL = $URLTenant.Text
$BconnectSP.Add_Click({
Disconnect-PnPOnline
$Url = $ConnectSPUrl
# Votre code de connexion à SharePoint ici
Connect-PnPOnline -Url $Url -UseWebLogin
Switch ($ERROR)
{
{$ERROR[0] -match "Host not reachable" }{
$label4.Text = "Injoignable"
$label4.ForeColor = [System.Drawing.Color]::MediumVioletRed
Break}
{$ERROR[0] -match "User canceled authentication."}{
$label4.Text = "Annulé"
$label4.ForeColor = [System.Drawing.Color]::MediumVioletRed
Break}
{-not ([string]::IsNullOrEmpty($pnpConnection))}{
$label4.Text = "Connecté"
$label4.ForeColor = [System.Drawing.Color]::Green
}
Default {
$label4.Text = "..."
$label4.ForeColor = [System.Drawing.Color]::Gray
$newRunspace =[runspacefactory]::CreateRunspace()
$newRunspace.ApartmentState ="STA"
$newRunspace.ThreadOptions ="ReuseThread"
$newRunspace.Open()
$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
$connectToSPRunspace.PowerShell = [PowerShell]::Create().AddScript({
Connect-PnPOnline -Url $tenantURL -Interactive | Out-String
Switch ($ERROR)
{
{$ERROR[0] -match "Host not reachable" }{
$label4.Text = "Injoignable"
$label4.ForeColor = [System.Drawing.Color]::MediumVioletRed
Break}
{$ERROR[0] -match "User canceled authentication."}{
$label4.Text = "Annulé"
$label4.ForeColor = [System.Drawing.Color]::MediumVioletRed
Break}
{-not ([string]::IsNullOrEmpty($pnpConnection))}{
$label4.Text = "Connecté"
$label4.ForeColor = [System.Drawing.Color]::Green
}
Default {
$label4.Text = "Connecté"
$label4.ForeColor = [System.Drawing.Color]::Green
}
}
}
})
})
$connectToSPRunspace.PowerShell.Runspace = $newRunspace
$connectToSPRunspace.Thread = $connectToSPRunspace.PowerShell.BeginInvoke()
})
function OnFormClosing_FMain{