Compare commits
34 Commits
ec111816d5
...
1.0.0
Author | SHA1 | Date | |
---|---|---|---|
07bf2c14ce | |||
f308f5e804 | |||
826c49d164 | |||
7df974133a | |||
e7d688f972 | |||
842a474a80 | |||
7285578906 | |||
67f3e3a4fa | |||
5de0e4613d | |||
1ea4f9e09c | |||
74d891415f | |||
15a7637596 | |||
ec5cb7dc4a | |||
9409e59f57 | |||
|
8ee990cca2 | ||
|
d6982c4927 | ||
|
bc97219e5e | ||
|
eadda6107c | ||
|
2dd5bd9217 | ||
|
09d5e0f281 | ||
|
9c7533edb0 | ||
66bd96e180 | |||
5614dcb11c | |||
|
7824d55859 | ||
|
5f11213de5 | ||
|
a42c3bf5ef | ||
|
a66fb59b6e | ||
|
f3634db543 | ||
f401ceb825 | |||
|
f120caa0e2 | ||
993825bea5 | |||
8b50ddb79c | |||
|
54ee71c7f2 | ||
|
3e6e4102ee |
115
AD/CreateN1-N2Users/Create-ADtechs.ps1
Normal file
115
AD/CreateN1-N2Users/Create-ADtechs.ps1
Normal file
@@ -0,0 +1,115 @@
|
||||
#On vérifie que les modules soient bien installés
|
||||
if (Get-Module -ListAvailable -Name PSWriteColor) {
|
||||
$modExiste = $true
|
||||
}
|
||||
else {
|
||||
$modExiste = $false
|
||||
}
|
||||
|
||||
#Cette étape permet de désactiver les messages de confirmation d'install
|
||||
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
|
||||
|
||||
switch ($modExiste) {
|
||||
$true{Import-Module ActiveDirectory;Import-Module PSWriteColor}
|
||||
$false{Install-Module PSWriteColor -Confirm:$False;Import-Module ActiveDirectory;Import-Module PSWriteColor}
|
||||
Default {Import-Module ActiveDirectory;Import-Module PSWriteColor}
|
||||
}
|
||||
|
||||
#On crée le CSV pour y stocker les ID
|
||||
$pcName = (Get-ComputerInfo).CSName
|
||||
Set-Content "C:\techLogins-$pcName.csv" -Value "Username,Password"
|
||||
|
||||
########### Fonctions ###########
|
||||
function GenPass { #Genere un mdp aléatoire selon les parametres indiqués
|
||||
|
||||
$TokenSet = @{
|
||||
U = [Char[]]'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
L = [Char[]]'abcdefghijklmnopqrstuvwxyz'
|
||||
N = [Char[]]'0123456789'
|
||||
S = [Char[]]'!"#$%&()*+,-.:;<=>?@[]^_`{}~'
|
||||
}
|
||||
|
||||
$Upper = Get-Random -Count 5 -InputObject $TokenSet.U
|
||||
$Lower = Get-Random -Count 5 -InputObject $TokenSet.L
|
||||
$Number = Get-Random -Count 5 -InputObject $TokenSet.N
|
||||
$Special = Get-Random -Count 5 -InputObject $TokenSet.S
|
||||
|
||||
$StringSet = $Upper + $Lower + $Number + $Special
|
||||
|
||||
$RdString = (Get-Random -Count 15 -InputObject $StringSet) -join ''
|
||||
|
||||
return $RdString
|
||||
|
||||
}
|
||||
|
||||
function GetADSID { #On récupere le SID de l'AD pour pouvoir l'intégrer aux groupes qui en ont besoin
|
||||
$fullSID = (Get-ADDomain).DomainSID.Value
|
||||
$domaineSID = $fullSID.split("-",5)[-1]
|
||||
return $domaineSID
|
||||
}
|
||||
|
||||
########### Variables ###########
|
||||
$userList = "Tech-N1","Tech-N2","Tech-N3"
|
||||
|
||||
# On récupère le SID du serveur car certains SID de groupes en ont besoin
|
||||
$domaineSID = (GetADSID)
|
||||
|
||||
# On utilise le SID des groupes au lieu de leur noms familliers car Microsoft les traduit dans la langue cible du serveur
|
||||
$grpAccountOp = "S-1-5-32-548"
|
||||
$grpDomainAdm = "S-1-5-21-$domaineSID-512"
|
||||
$grpPrintOp = "S-1-5-32-550"
|
||||
#$grpServerOp = "S-1-5-32-549" Pas utilisé
|
||||
#$grpPowerUsers = "S-1-5-32-547" Déprécié
|
||||
$grpDHCPadm = "S-1-5-21-$domaineSID-1111"
|
||||
$grpDHCPuser = "S-1-5-21-$domaineSID-1110"
|
||||
$grpGPOadmin = "S-1-5-21-$domaineSID-520"
|
||||
$grpNetAdmin = "S-1-5-32-556"
|
||||
#################################
|
||||
|
||||
|
||||
########### Script ############
|
||||
|
||||
#Pour chaque user, on le crée + ajoute aux bons groupes
|
||||
ForEach($user in $userList){
|
||||
try{
|
||||
# On vérifie si l'utilisateur existe déjà, passe au suivant si oui
|
||||
$existingUser = Get-ADUser -Filter { Name -eq $user } -ErrorAction SilentlyContinue
|
||||
if ($existingUser) {
|
||||
Write-Color -Text "L'utilisateur ", $user, " existe déjà. Application des permissions." -Color White, Yellow
|
||||
}
|
||||
$userPass = (GenPass)
|
||||
$userEncPass = ConvertTo-SecureString -String $userPass -AsPlainText -Force
|
||||
$detailsUser = @{
|
||||
Name = $user
|
||||
AccountPassword = $userEncPass
|
||||
Enabled = $true
|
||||
ChangePasswordAtLogon = $false
|
||||
PasswordNeverExpires = $true #On fait en sorte qu'il n'expire pas
|
||||
}
|
||||
New-ADUser @detailsUser #On cree l'user...
|
||||
|
||||
#...puis on l'ajoute aux bons groupes
|
||||
switch ($user) {
|
||||
"Tech-N1"{$Groups = @($grpAccountOp,$grpPrintOp,$grpDHCPuser)}
|
||||
"Tech-N2"{$Groups = @($grpAccountOp,$grpPrintOp,$grpDHCPadm,$grpGPOadmin,$grpNetAdmin)}
|
||||
"Tech-N3"{$Groups = @($grpDomainAdm)}
|
||||
Default {}
|
||||
}
|
||||
|
||||
$newCsvLine = @([PSCustomObject]@{Username = $user; Password = $userPass})
|
||||
$newCsvLine | Export-CSV "C:\techLogins-$pcName.csv" -Append -NoTypeInformation -Encoding UTF8
|
||||
|
||||
ForEach ($Group in $Groups) {
|
||||
|
||||
Add-ADPrincipalGroupMembership $User -MemberOf $Group
|
||||
|
||||
}
|
||||
|
||||
Write-Color -Text "L'utilisateur ",$User," a bien été crée. Son mot de passe est ",$userPass -Color White,Green,White,Cyan
|
||||
}
|
||||
catch {
|
||||
Write-Error "Erreur pour l'utilisateur $user : $_"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Color -Text "Les utilisateurs ainsi que leur mots de passes ont été exportés ici : ","C:\techLogins-$pcName.csv" -Color White,Green
|
17
Intune/Random-PWGen.ps1
Normal file
17
Intune/Random-PWGen.ps1
Normal file
@@ -0,0 +1,17 @@
|
||||
$TokenSet = @{
|
||||
U = [Char[]]'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
L = [Char[]]'abcdefghijklmnopqrstuvwxyz'
|
||||
N = [Char[]]'0123456789'
|
||||
S = [Char[]]'!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~'
|
||||
}
|
||||
|
||||
$Upper = Get-Random -Count 5 -InputObject $TokenSet.U
|
||||
$Lower = Get-Random -Count 5 -InputObject $TokenSet.L
|
||||
$Number = Get-Random -Count 5 -InputObject $TokenSet.N
|
||||
$Special = Get-Random -Count 5 -InputObject $TokenSet.S
|
||||
|
||||
$StringSet = $Upper + $Lower + $Number + $Special
|
||||
|
||||
$RdString = (Get-Random -Count 15 -InputObject $StringSet) -join ''
|
||||
|
||||
#You can use now $RdString in your script to make a random password to an AD user or other stuff...
|
7
Misc/Multi-Thread/template.ps1
Normal file
7
Misc/Multi-Thread/template.ps1
Normal file
@@ -0,0 +1,7 @@
|
||||
# This is a template for multi-threaded stuff, or at least it should be...
|
||||
|
||||
# We start a new job and store it in a variable to be able to display said job later by invoking the variable in the Receive-Job cmdlet.
|
||||
$Job = Start-Job -ScriptBlock {Write-Output 'Hello World'}
|
||||
Receive-Job $Job # Will display Hello World in the cmd
|
||||
|
||||
|
11
Sharepoint/gui/spmover/.vscode/launch.json
vendored
Normal file
11
Sharepoint/gui/spmover/.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "PowerShell: Launch Script",
|
||||
"type": "PowerShell",
|
||||
"request": "launch",
|
||||
"script": "${workspaceFolder}\\sputils.ps1",
|
||||
"args": []
|
||||
}
|
||||
]
|
||||
}
|
3
Sharepoint/gui/spmover/readme.md
Normal file
3
Sharepoint/gui/spmover/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# SharePoint Utils
|
||||
|
||||
Sharepoint Utils concatenate all the useful scripts useed to manage your SharePoints in one easy to use GUI.
|
@@ -1,186 +0,0 @@
|
||||
################################################################################
|
||||
#
|
||||
# Name : SharePoint Mover
|
||||
# Version : 0.1
|
||||
# Author :
|
||||
# Date : 07/03/2024
|
||||
#
|
||||
# Generated with ConvertForm module version 2.0.0
|
||||
# PowerShell version 7.4.1
|
||||
#
|
||||
# Invocation Line : Convert-Form -Path $Source -Destination $Destination -Encoding ascii -force
|
||||
# Source : C:\Users\SebastienQUEROL\source\repos\sharepointmover-gui\Form1.Designer.cs
|
||||
################################################################################
|
||||
|
||||
function Get-ScriptDirectory
|
||||
{ #Return the directory name of this script
|
||||
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
|
||||
Split-Path $Invocation.MyCommand.Path
|
||||
}
|
||||
|
||||
$ScriptPath = Get-ScriptDirectory
|
||||
|
||||
# Chargement des assemblies externes
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
Add-Type -AssemblyName System.Drawing
|
||||
|
||||
$FMain = New-Object System.Windows.Forms.Form
|
||||
|
||||
$components = New-Object System.ComponentModel.Container
|
||||
$menuStrip1 = New-Object System.Windows.Forms.MenuStrip
|
||||
$Mconnexion = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$MConnexionSharepoint = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$Mquestion = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$MQuestionApropos = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$MQuestionWiki = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$Bgo = New-Object System.Windows.Forms.Button
|
||||
$CBsourceSite = New-Object System.Windows.Forms.ComboBox
|
||||
$CBdestSite = New-Object System.Windows.Forms.ComboBox
|
||||
$progressBar1 = New-Object System.Windows.Forms.ProgressBar
|
||||
$sourceInfo = New-Object System.Windows.Forms.ToolTip($components)
|
||||
$label1 = New-Object System.Windows.Forms.Label
|
||||
$label2 = New-Object System.Windows.Forms.Label
|
||||
#
|
||||
# menuStrip1
|
||||
#
|
||||
$menuStrip1.Items.AddRange(@(
|
||||
$Mconnexion,
|
||||
$Mquestion))
|
||||
$menuStrip1.Location = New-Object System.Drawing.Point(0, 0)
|
||||
$menuStrip1.Name = "menuStrip1"
|
||||
$menuStrip1.Size = New-Object System.Drawing.Size(800, 24)
|
||||
$menuStrip1.TabIndex = 0
|
||||
$menuStrip1.Text = "menuStrip1"
|
||||
#
|
||||
# Mconnexion
|
||||
#
|
||||
$Mconnexion.DropDownItems.AddRange(@(
|
||||
$MConnexionSharepoint))
|
||||
$Mconnexion.Name = "Mconnexion"
|
||||
$Mconnexion.Size = New-Object System.Drawing.Size(77, 20)
|
||||
$Mconnexion.Text = "Connexion"
|
||||
#
|
||||
# MConnexionSharepoint
|
||||
#
|
||||
$MConnexionSharepoint.CheckOnClick = $true
|
||||
$MConnexionSharepoint.Name = "MConnexionSharepoint"
|
||||
$MConnexionSharepoint.Size = New-Object System.Drawing.Size(131, 22)
|
||||
$MConnexionSharepoint.Text = "Sharepoint"
|
||||
#
|
||||
# Mquestion
|
||||
#
|
||||
$Mquestion.DropDownItems.AddRange(@(
|
||||
$MQuestionApropos,
|
||||
$MQuestionWiki))
|
||||
$Mquestion.Name = "Mquestion"
|
||||
$Mquestion.Size = New-Object System.Drawing.Size(24, 20)
|
||||
$Mquestion.Text = "?"
|
||||
#
|
||||
# MQuestionApropos
|
||||
#
|
||||
$MQuestionApropos.Name = "MQuestionApropos"
|
||||
$MQuestionApropos.Size = New-Object System.Drawing.Size(131, 22)
|
||||
$MQuestionApropos.Text = "A propos..."
|
||||
#
|
||||
# MQuestionWiki
|
||||
#
|
||||
$MQuestionWiki.Name = "MQuestionWiki"
|
||||
$MQuestionWiki.Size = New-Object System.Drawing.Size(131, 22)
|
||||
$MQuestionWiki.Text = "Wiki"
|
||||
#
|
||||
# Bgo
|
||||
#
|
||||
$Bgo.ForeColor = [System.Drawing.Color]::White
|
||||
$Bgo.Location = New-Object System.Drawing.Point(688, 155)
|
||||
$Bgo.Name = "Bgo"
|
||||
$Bgo.Size = New-Object System.Drawing.Size(75, 23)
|
||||
$Bgo.TabIndex = 1
|
||||
$Bgo.Text = "GO"
|
||||
$Bgo.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# CBsourceSite
|
||||
#
|
||||
$CBsourceSite.ForeColor = [System.Drawing.Color]::White
|
||||
$CBsourceSite.FormattingEnabled = $true
|
||||
$CBsourceSite.Location = New-Object System.Drawing.Point(27, 131)
|
||||
$CBsourceSite.Name = "CBsourceSite"
|
||||
$CBsourceSite.Size = New-Object System.Drawing.Size(587, 21)
|
||||
$CBsourceSite.TabIndex = 2
|
||||
#
|
||||
# CBdestSite
|
||||
#
|
||||
$CBdestSite.ForeColor = [System.Drawing.Color]::White
|
||||
$CBdestSite.FormattingEnabled = $true
|
||||
$CBdestSite.Location = New-Object System.Drawing.Point(27, 182)
|
||||
$CBdestSite.Name = "CBdestSite"
|
||||
$CBdestSite.Size = New-Object System.Drawing.Size(587, 21)
|
||||
$CBdestSite.TabIndex = 3
|
||||
#
|
||||
# progressBar1
|
||||
#
|
||||
$progressBar1.Location = New-Object System.Drawing.Point(12, 345)
|
||||
$progressBar1.Name = "progressBar1"
|
||||
$progressBar1.Size = New-Object System.Drawing.Size(776, 23)
|
||||
$progressBar1.TabIndex = 4
|
||||
#
|
||||
# label1
|
||||
#
|
||||
$label1.AutoSize = $true
|
||||
$label1.Location = New-Object System.Drawing.Point(27, 112)
|
||||
$label1.Name = "label1"
|
||||
$label1.Size = New-Object System.Drawing.Size(62, 13)
|
||||
$label1.TabIndex = 5
|
||||
$label1.Text = "Site Source"
|
||||
#
|
||||
# label2
|
||||
#
|
||||
$label2.AutoSize = $true
|
||||
$label2.Location = New-Object System.Drawing.Point(27, 166)
|
||||
$label2.Name = "label2"
|
||||
$label2.Size = New-Object System.Drawing.Size(81, 13)
|
||||
$label2.TabIndex = 6
|
||||
$label2.Text = "Site Destination"
|
||||
#
|
||||
# FMain
|
||||
#
|
||||
$FMain.BackColor = [System.Drawing.SystemColors]::ControlText
|
||||
$FMain.ClientSize = New-Object System.Drawing.Size(800, 450)
|
||||
$FMain.Controls.Add($label2)
|
||||
$FMain.Controls.Add($label1)
|
||||
$FMain.Controls.Add($progressBar1)
|
||||
$FMain.Controls.Add($CBdestSite)
|
||||
$FMain.Controls.Add($CBsourceSite)
|
||||
$FMain.Controls.Add($Bgo)
|
||||
$FMain.Controls.Add($menuStrip1)
|
||||
$FMain.ForeColor = [System.Drawing.Color]::Snow
|
||||
$FMain.MainMenuStrip = $menuStrip1
|
||||
$FMain.Name = "FMain"
|
||||
$FMain.Text = "SharePoint Mover GUI"
|
||||
|
||||
$CBsourceSite.SelectedIndex = 0
|
||||
$CBtargetSite.SelectedIndex = 0
|
||||
|
||||
$MConnexionSharepoint.add_click({
|
||||
|
||||
|
||||
Connect-PnPOnline -Url $tenantURL -Interactive
|
||||
###############On recupere puis stocke la liste des sites dans les box
|
||||
$ComboboxList = (Get-SPOSite | Select Url).name
|
||||
$CBsourceSite.Items.AddRange($ComboboxList)
|
||||
|
||||
$ComboboxList = (Get-SPOSite | Select Url).name
|
||||
$CBtargetSite.Items.AddRange($ComboboxList)
|
||||
###############
|
||||
|
||||
})
|
||||
|
||||
$Bgo.add_click({
|
||||
|
||||
Move-PnPFile -SiteRelativeUrl $srcSite -TargetUrl $destSite -Force -AllowSchemaMismatch
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
$FMain.ShowDialog()
|
544
Sharepoint/gui/spmover/sputils.ps1
Normal file
544
Sharepoint/gui/spmover/sputils.ps1
Normal file
@@ -0,0 +1,544 @@
|
||||
################################################################################
|
||||
#
|
||||
# Name : C:\Users\SebastienQUEROL\source\repos\sharepointmover-gui\Form1.ps1
|
||||
# Version : 0.1
|
||||
# Author :
|
||||
# Date : 08/03/2024
|
||||
#
|
||||
# Generated with ConvertForm module version 2.0.0
|
||||
# PowerShell version 7.4.1
|
||||
#
|
||||
# Invocation Line : Convert-Form -Path $Source -Destination $Destination -Encoding utf8 -force
|
||||
# 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
|
||||
# $Invocation = (Get-Variable MyInvocation -Scope 1).Value
|
||||
# Split-Path $Invocation.MyCommand.Path
|
||||
# }
|
||||
# $ScriptPath = Get-ScriptDirectory
|
||||
###
|
||||
|
||||
# Chargement des assemblies externes
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
Add-Type -AssemblyName System.Drawing
|
||||
|
||||
$FMain = New-Object System.Windows.Forms.Form
|
||||
|
||||
$components = New-Object System.ComponentModel.Container
|
||||
$menuStrip1 = New-Object System.Windows.Forms.MenuStrip
|
||||
$Mquestion = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$MQuestionApropos = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$MQuestionWiki = New-Object System.Windows.Forms.ToolStripMenuItem
|
||||
$Bgo = New-Object System.Windows.Forms.Button
|
||||
$BlistSites = New-Object System.Windows.Forms.Button
|
||||
$CBsourceSite = New-Object System.Windows.Forms.ComboBox
|
||||
$CBdestSite = New-Object System.Windows.Forms.ComboBox
|
||||
$progressBar1 = New-Object System.Windows.Forms.ProgressBar
|
||||
$sourceInfo = New-Object System.Windows.Forms.ToolTip($components)
|
||||
$label1 = New-Object System.Windows.Forms.Label
|
||||
$label2 = New-Object System.Windows.Forms.Label
|
||||
$tabs = New-Object System.Windows.Forms.TabControl
|
||||
$tabPage1 = New-Object System.Windows.Forms.TabPage
|
||||
$tabPage2 = New-Object System.Windows.Forms.TabPage
|
||||
$BconnectSP = New-Object System.Windows.Forms.Button
|
||||
$URLTenant = New-Object System.Windows.Forms.TextBox
|
||||
$label3 = New-Object System.Windows.Forms.Label
|
||||
$groupBox1 = New-Object System.Windows.Forms.GroupBox
|
||||
$groupBox2 = New-Object System.Windows.Forms.GroupBox
|
||||
$radioButton1 = New-Object System.Windows.Forms.RadioButton
|
||||
$radioButton2 = New-Object System.Windows.Forms.RadioButton
|
||||
$radioButton3 = New-Object System.Windows.Forms.RadioButton
|
||||
$button1 = New-Object System.Windows.Forms.Button
|
||||
$checkBox1 = New-Object System.Windows.Forms.CheckBox
|
||||
$label4 = New-Object System.Windows.Forms.Label
|
||||
$tabPage3 = New-Object System.Windows.Forms.TabPage
|
||||
$tabPage4 = New-Object System.Windows.Forms.TabPage
|
||||
$tabPage5 = New-Object System.Windows.Forms.TabPage
|
||||
$LresultsMove = New-Object System.Windows.Forms.ListView
|
||||
#
|
||||
# menuStrip1
|
||||
#
|
||||
$menuStrip1.Items.AddRange(@(
|
||||
$Mquestion))
|
||||
$menuStrip1.Location = New-Object System.Drawing.Point(0, 0)
|
||||
$menuStrip1.Name = "menuStrip1"
|
||||
$menuStrip1.Size = New-Object System.Drawing.Size(800, 24)
|
||||
$menuStrip1.TabIndex = 0
|
||||
$menuStrip1.Text = "menuStrip1"
|
||||
#
|
||||
# Mquestion
|
||||
#
|
||||
$Mquestion.DropDownItems.AddRange(@(
|
||||
$MQuestionApropos,
|
||||
$MQuestionWiki))
|
||||
$Mquestion.Name = "Mquestion"
|
||||
$Mquestion.Size = New-Object System.Drawing.Size(24, 20)
|
||||
$Mquestion.Text = "?"
|
||||
#
|
||||
# MQuestionApropos
|
||||
#
|
||||
$MQuestionApropos.Name = "MQuestionApropos"
|
||||
$MQuestionApropos.Size = New-Object System.Drawing.Size(180, 22)
|
||||
$MQuestionApropos.Text = "A propos..."
|
||||
#
|
||||
# MQuestionWiki
|
||||
#
|
||||
$MQuestionWiki.Name = "MQuestionWiki"
|
||||
$MQuestionWiki.Size = New-Object System.Drawing.Size(180, 22)
|
||||
$MQuestionWiki.Text = "Wiki"
|
||||
#
|
||||
# Bgo
|
||||
#
|
||||
$Bgo.ForeColor = [System.Drawing.Color]::Black
|
||||
$Bgo.Location = New-Object System.Drawing.Point(649, 83)
|
||||
$Bgo.Name = "Bgo"
|
||||
$Bgo.Size = New-Object System.Drawing.Size(75, 23)
|
||||
$Bgo.TabIndex = 1
|
||||
$Bgo.Text = "GO"
|
||||
$Bgo.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# BlistSites
|
||||
#
|
||||
$BlistSItes.ForeColor = [System.Drawing.Color]::Black
|
||||
$BlistSItes.Location = New-Object System.Drawing.Point(649, 55)
|
||||
$BlistSItes.Name = "BlistSites"
|
||||
$BlistSItes.Size = New-Object System.Drawing.Size(75, 23)
|
||||
$BlistSItes.TabIndex = 2
|
||||
$BlistSItes.Text = "List. Sites"
|
||||
$BlistSItes.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# CBsourceSite
|
||||
#
|
||||
$CBsourceSite.FormattingEnabled = $true
|
||||
$CBsourceSite.Location = New-Object System.Drawing.Point(23, 44)
|
||||
$CBsourceSite.Name = "CBsourceSite"
|
||||
$CBsourceSite.Size = New-Object System.Drawing.Size(587, 21)
|
||||
$CBsourceSite.TabIndex = 3
|
||||
#
|
||||
# CBdestSite
|
||||
#
|
||||
$CBdestSite.FormattingEnabled = $true
|
||||
$CBdestSite.Location = New-Object System.Drawing.Point(23, 113)
|
||||
$CBdestSite.Name = "CBdestSite"
|
||||
$CBdestSite.Size = New-Object System.Drawing.Size(587, 21)
|
||||
$CBdestSite.TabIndex = 4
|
||||
#
|
||||
# progressBar1
|
||||
#
|
||||
$progressBar1.Location = New-Object System.Drawing.Point(8, 369)
|
||||
$progressBar1.Name = "progressBar1"
|
||||
$progressBar1.Size = New-Object System.Drawing.Size(776, 23)
|
||||
$progressBar1.TabIndex = 5
|
||||
#
|
||||
# label1
|
||||
#
|
||||
$label1.AutoSize = $true
|
||||
$label1.ForeColor = [System.Drawing.Color]::Black
|
||||
$label1.Location = New-Object System.Drawing.Point(23, 19)
|
||||
$label1.Name = "label1"
|
||||
$label1.Size = New-Object System.Drawing.Size(41, 13)
|
||||
$label1.TabIndex = 6
|
||||
$label1.Text = "Source"
|
||||
#
|
||||
# label2
|
||||
#
|
||||
$label2.AutoSize = $true
|
||||
$label2.ForeColor = [System.Drawing.Color]::Black
|
||||
$label2.Location = New-Object System.Drawing.Point(23, 88)
|
||||
$label2.Name = "label2"
|
||||
$label2.Size = New-Object System.Drawing.Size(60, 13)
|
||||
$label2.TabIndex = 7
|
||||
$label2.Text = "Destination"
|
||||
#
|
||||
# tabs
|
||||
#
|
||||
$tabs.Controls.Add($tabPage1)
|
||||
$tabs.Controls.Add($tabPage3)
|
||||
$tabs.Controls.Add($tabPage4)
|
||||
$tabs.Controls.Add($tabPage5)
|
||||
$tabs.Controls.Add($tabPage2)
|
||||
$tabs.Location = New-Object System.Drawing.Point(0, 27)
|
||||
$tabs.Name = "tabs"
|
||||
$tabs.SelectedIndex = 0
|
||||
$tabs.Size = New-Object System.Drawing.Size(800, 424)
|
||||
$tabs.TabIndex = 8
|
||||
#
|
||||
# tabPage1
|
||||
#
|
||||
$tabPage1.Controls.Add($LresultsMove)
|
||||
$tabPage1.Controls.Add($label1)
|
||||
$tabPage1.Controls.Add($progressBar1)
|
||||
$tabPage1.Controls.Add($label2)
|
||||
$tabPage1.Controls.Add($Bgo)
|
||||
$tabPage1.Controls.Add($BlistSites)
|
||||
$tabPage1.Controls.Add($CBsourceSite)
|
||||
$tabPage1.Controls.Add($CBdestSite)
|
||||
$tabPage1.Location = New-Object System.Drawing.Point(4, 22)
|
||||
$tabPage1.Name = "tabPage1"
|
||||
$tabPage1.Padding = New-Object System.Windows.Forms.Padding(3)
|
||||
$tabPage1.Size = New-Object System.Drawing.Size(792, 398)
|
||||
$tabPage1.TabIndex = 0
|
||||
$tabPage1.Text = "Move"
|
||||
$tabPage1.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# tabPage2
|
||||
#
|
||||
$tabPage2.Controls.Add($groupBox2)
|
||||
$tabPage2.Controls.Add($groupBox1)
|
||||
$tabPage2.Location = New-Object System.Drawing.Point(4, 22)
|
||||
$tabPage2.Name = "tabPage2"
|
||||
$tabPage2.Padding = New-Object System.Windows.Forms.Padding(3)
|
||||
$tabPage2.Size = New-Object System.Drawing.Size(792, 398)
|
||||
$tabPage2.TabIndex = 1
|
||||
$tabPage2.Text = "Parametres"
|
||||
$tabPage2.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# BconnectSP
|
||||
#
|
||||
$BconnectSP.ForeColor = [System.Drawing.Color]::Black
|
||||
$BconnectSP.Location = New-Object System.Drawing.Point(376, 53)
|
||||
$BconnectSP.Name = "BconnectSP"
|
||||
$BconnectSP.Size = New-Object System.Drawing.Size(75, 23)
|
||||
$BconnectSP.TabIndex = 0
|
||||
$BconnectSP.Text = "Connexion"
|
||||
$BconnectSP.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# URLTenant
|
||||
#
|
||||
$URLTenant.Location = New-Object System.Drawing.Point(22, 55)
|
||||
$URLTenant.Name = "URLTenant"
|
||||
$URLTenant.Text = "https://guycarlier.sharepoint.com"
|
||||
$URLTenant.Size = New-Object System.Drawing.Size(325, 20)
|
||||
$URLTenant.TabIndex = 1
|
||||
#
|
||||
# label3
|
||||
#
|
||||
$label3.AutoSize = $true
|
||||
$label3.ForeColor = [System.Drawing.Color]::Black
|
||||
$label3.Location = New-Object System.Drawing.Point(22, 32)
|
||||
$label3.Name = "label3"
|
||||
$label3.Size = New-Object System.Drawing.Size(132, 13)
|
||||
$label3.TabIndex = 2
|
||||
$label3.Text = "URL du tenant SharePoint"
|
||||
#
|
||||
# groupBox1
|
||||
#
|
||||
$groupBox1.Controls.Add($label4)
|
||||
$groupBox1.Controls.Add($label3)
|
||||
$groupBox1.Controls.Add($BconnectSP)
|
||||
$groupBox1.Controls.Add($URLTenant)
|
||||
$groupBox1.Location = New-Object System.Drawing.Point(8, 6)
|
||||
$groupBox1.Name = "groupBox1"
|
||||
$groupBox1.Size = New-Object System.Drawing.Size(473, 100)
|
||||
$groupBox1.TabIndex = 3
|
||||
$groupBox1.TabStop = $false
|
||||
$groupBox1.Text = "Connexion"
|
||||
#
|
||||
# groupBox2
|
||||
#
|
||||
$groupBox2.Controls.Add($checkBox1)
|
||||
$groupBox2.Controls.Add($button1)
|
||||
$groupBox2.Controls.Add($radioButton3)
|
||||
$groupBox2.Controls.Add($radioButton2)
|
||||
$groupBox2.Controls.Add($radioButton1)
|
||||
$groupBox2.Location = New-Object System.Drawing.Point(9, 113)
|
||||
$groupBox2.Name = "groupBox2"
|
||||
$groupBox2.Size = New-Object System.Drawing.Size(472, 145)
|
||||
$groupBox2.TabIndex = 4
|
||||
$groupBox2.TabStop = $false
|
||||
$groupBox2.Text = "Rapports"
|
||||
#
|
||||
# radioButton1
|
||||
#
|
||||
$radioButton1.AutoSize = $true
|
||||
$radioButton1.ForeColor = [System.Drawing.Color]::Black
|
||||
$radioButton1.Location = New-Object System.Drawing.Point(23, 66)
|
||||
$radioButton1.Name = "radioButton1"
|
||||
$radioButton1.Size = New-Object System.Drawing.Size(141, 17)
|
||||
$radioButton1.TabIndex = 0
|
||||
$radioButton1.TabStop = $true
|
||||
$radioButton1.Text = "Intégralité des messages"
|
||||
$radioButton1.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# radioButton2
|
||||
#
|
||||
$radioButton2.AutoSize = $true
|
||||
$radioButton2.ForeColor = [System.Drawing.Color]::Black
|
||||
$radioButton2.Location = New-Object System.Drawing.Point(23, 92)
|
||||
$radioButton2.Name = "radioButton2"
|
||||
$radioButton2.Size = New-Object System.Drawing.Size(109, 17)
|
||||
$radioButton2.TabIndex = 1
|
||||
$radioButton2.TabStop = $true
|
||||
$radioButton2.Text = "Erreurs seulement"
|
||||
$radioButton2.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# radioButton3
|
||||
#
|
||||
$radioButton3.AutoSize = $true
|
||||
$radioButton3.ForeColor = [System.Drawing.Color]::Black
|
||||
$radioButton3.Location = New-Object System.Drawing.Point(23, 116)
|
||||
$radioButton3.Name = "radioButton3"
|
||||
$radioButton3.Size = New-Object System.Drawing.Size(113, 17)
|
||||
$radioButton3.TabIndex = 2
|
||||
$radioButton3.TabStop = $true
|
||||
$radioButton3.Text = "Réussis seulement"
|
||||
$radioButton3.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# button1
|
||||
#
|
||||
$button1.ForeColor = [System.Drawing.Color]::Black
|
||||
$button1.Location = New-Object System.Drawing.Point(21, 29)
|
||||
$button1.Name = "button1"
|
||||
$button1.Size = New-Object System.Drawing.Size(174, 23)
|
||||
$button1.TabIndex = 3
|
||||
$button1.Text = "Choix de l'emplacement..."
|
||||
$button1.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# checkBox1
|
||||
#
|
||||
$checkBox1.AutoSize = $true
|
||||
$checkBox1.ForeColor = [System.Drawing.Color]::Black
|
||||
$checkBox1.Location = New-Object System.Drawing.Point(189, 68)
|
||||
$checkBox1.Name = "checkBox1"
|
||||
$checkBox1.Size = New-Object System.Drawing.Size(153, 17)
|
||||
$checkBox1.TabIndex = 4
|
||||
$checkBox1.Text = "Inclure ligne de commande"
|
||||
$checkBox1.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# label4
|
||||
#
|
||||
$label4.AutoSize = $true
|
||||
$label4.ForeColor = [System.Drawing.Color]::MediumVioletRed
|
||||
$label4.Location = New-Object System.Drawing.Point(380, 32)
|
||||
$label4.Name = "label4"
|
||||
$label4.Size = New-Object System.Drawing.Size(66, 13)
|
||||
$label4.TabIndex = 3
|
||||
$label4.TextAlign = [System.Drawing.ContentAlignment]::MiddleCenter
|
||||
##On modifie le texte du label en fonction de l'état initial de la connection a PNPOnline
|
||||
$pnpConnection = Get-PnPConnection | Out-string
|
||||
if(-not ([string]::IsNullOrEmpty($pnpConnection))){
|
||||
$pnpConnection -match "Url : (?<content>.*)/"
|
||||
$pnpConnectionUrl = $matches["content"]
|
||||
$label4.Text = "Connecté"
|
||||
$label4.ForeColor = [System.Drawing.Color]::Green
|
||||
$URLTenant.Text = $pnpConnectionUrl
|
||||
}else{
|
||||
$label4.Text = "Déconnecté"
|
||||
$label4.ForeColor = [System.Drawing.Color]::MediumVioletRed
|
||||
}
|
||||
#
|
||||
# tabPage3
|
||||
#
|
||||
$tabPage3.Location = New-Object System.Drawing.Point(4, 22)
|
||||
$tabPage3.Name = "tabPage3"
|
||||
$tabPage3.Padding = New-Object System.Windows.Forms.Padding(3)
|
||||
$tabPage3.Size = New-Object System.Drawing.Size(792, 398)
|
||||
$tabPage3.TabIndex = 2
|
||||
$tabPage3.Text = "Rapports"
|
||||
$tabPage3.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# tabPage4
|
||||
#
|
||||
$tabPage4.Location = New-Object System.Drawing.Point(4, 22)
|
||||
$tabPage4.Name = "tabPage4"
|
||||
$tabPage4.Padding = New-Object System.Windows.Forms.Padding(3)
|
||||
$tabPage4.Size = New-Object System.Drawing.Size(792, 398)
|
||||
$tabPage4.TabIndex = 3
|
||||
$tabPage4.Text = "Import"
|
||||
$tabPage4.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# tabPage5
|
||||
#
|
||||
$tabPage5.Location = New-Object System.Drawing.Point(4, 22)
|
||||
$tabPage5.Name = "tabPage5"
|
||||
$tabPage5.Padding = New-Object System.Windows.Forms.Padding(3)
|
||||
$tabPage5.Size = New-Object System.Drawing.Size(792, 398)
|
||||
$tabPage5.TabIndex = 4
|
||||
$tabPage5.Text = "Audit"
|
||||
$tabPage5.UseVisualStyleBackColor = $true
|
||||
#
|
||||
# LresultsMove
|
||||
#
|
||||
$LresultsMove.HideSelection = $false
|
||||
$LresultsMove.Location = New-Object System.Drawing.Point(8, 173)
|
||||
$LresultsMove.Name = "LresultsMove"
|
||||
#$LresultsMove.FullRowSelect = true
|
||||
$LresultsMove.Size = New-Object System.Drawing.Size(776, 190)
|
||||
$LresultsMove.TabIndex = 7
|
||||
$LresultsMove.AutoSize = $true
|
||||
#$LresultsMove.MultiColumn = $false
|
||||
#$LresultsMove.UseCompatibleStateImageBehavior = $false
|
||||
#
|
||||
# FMain
|
||||
#
|
||||
$FMain.BackColor = [System.Drawing.SystemColors]::ControlText
|
||||
$FMain.ClientSize = New-Object System.Drawing.Size(800, 450)
|
||||
$FMain.Controls.Add($tabs)
|
||||
$FMain.Controls.Add($menuStrip1)
|
||||
$FMain.ForeColor = [System.Drawing.Color]::Black
|
||||
$FMain.MainMenuStrip = $menuStrip1
|
||||
$FMain.Name = "FMain"
|
||||
$FMain.Text = "SharePoint Utils GUI"
|
||||
|
||||
#Onglet Move
|
||||
##Lister les sites dans les comboBoxes
|
||||
#### On lance le ScriptBlock dans un runspace au clic du bouton BlistSites
|
||||
$BlistSites.Add_Click({
|
||||
$newRunspace =[runspacefactory]::CreateRunspace()
|
||||
$newRunspace.ApartmentState ="STA"
|
||||
$newRunspace.ThreadOptions ="ReuseThread"
|
||||
$newRunspace.Open()
|
||||
$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
|
||||
|
||||
$BlistSitesRunSpace = [PowerShell]::Create().AddScript({
|
||||
|
||||
#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()
|
||||
|
||||
})
|
||||
|
||||
##Bouger les dossiers
|
||||
# $copyIt = {
|
||||
# param ($sourceSite,$destSite)
|
||||
|
||||
# $sourceSite = $sourceSite -Replace '[A-Za-z]+://([A-Za-z]+(\.[A-Za-z]+)+)',''
|
||||
# $destSite = $destSite -Replace '[A-Za-z]+://([A-Za-z]+(\.[A-Za-z]+)+)',''
|
||||
|
||||
# $jobCopyPending = Copy-PnPFile -SourceUrl "$sourceSite" -TargetUrl "$destSite" -Force -OverwriteIfAlreadyExists
|
||||
# $jobStatus = Receive-PnPCopyMoveJobStatus -Job $jobCopyPending -Wait
|
||||
# Write-Output $jobStatus
|
||||
|
||||
# }
|
||||
|
||||
$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]+)+)',''
|
||||
$destSite = $destSite -Replace '[A-Za-z]+://([A-Za-z]+(\.[A-Za-z]+)+)',''
|
||||
|
||||
$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()
|
||||
|
||||
})
|
||||
|
||||
|
||||
#Onglet Parametres
|
||||
##Connexion Sharepoint
|
||||
$pnpConnection=$null
|
||||
$pnpConnection = Get-PnPConnection | Out-string
|
||||
$tenantURL = $URLTenant.Text
|
||||
|
||||
$BconnectSP.Add_Click({
|
||||
|
||||
Disconnect-PnPOnline
|
||||
$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{
|
||||
# $this parameter is equal to the sender (object)
|
||||
# $_ is equal to the parameter e (eventarg)
|
||||
|
||||
# The CloseReason property indicates a reason for the closure :
|
||||
# if (($_).CloseReason -eq [System.Windows.Forms.CloseReason]::UserClosing)
|
||||
|
||||
#Sets the value indicating that the event should be canceled.
|
||||
($_).Cancel= $False
|
||||
}
|
||||
|
||||
$FMain.Add_FormClosing({
|
||||
#Disconnect-PnPOnline
|
||||
Write-Host "Goodbye, come again soon :*"
|
||||
$RunspacePool.Close()
|
||||
$RunspacePool.Dispose()
|
||||
[gc]::Collect()
|
||||
OnFormClosing_FMain
|
||||
})
|
||||
|
||||
$FMain.Add_Shown({$FMain.Activate()})
|
||||
$ModalResult=$FMain.ShowDialog()
|
||||
# Libération de la Form
|
||||
$FMain.Dispose()
|
Reference in New Issue
Block a user