diff --git a/AD/CreateN1-N2Users/Create-ADtechs.ps1.psbuild b/AD/CreateN1-N2Users/Create-ADtechs.ps1.psbuild
new file mode 100644
index 0000000..baf2a03
Binary files /dev/null and b/AD/CreateN1-N2Users/Create-ADtechs.ps1.psbuild differ
diff --git a/AD/CreateN1-N2Users/bin/x64/Create-ADtechs.exe b/AD/CreateN1-N2Users/bin/x64/Create-ADtechs.exe
new file mode 100644
index 0000000..920a60e
Binary files /dev/null and b/AD/CreateN1-N2Users/bin/x64/Create-ADtechs.exe differ
diff --git a/AD/CreateN1-N2Users/bin/x64/Create-ADtechs.exe.config b/AD/CreateN1-N2Users/bin/x64/Create-ADtechs.exe.config
new file mode 100644
index 0000000..eb5c2e0
--- /dev/null
+++ b/AD/CreateN1-N2Users/bin/x64/Create-ADtechs.exe.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Misc/Register Az App/regApp.TempPoint.psf b/Misc/Register Az App/regApp.TempPoint.psf
new file mode 100644
index 0000000..b5cd0da
--- /dev/null
+++ b/Misc/Register Az App/regApp.TempPoint.psf
@@ -0,0 +1,631 @@
+
+ 27bdac5f-55ae-4908-a755-ee5f598a9689
+ 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
+5LG8HjUAAAAASUVORK5CYII=
+
+ Set-ControlTheme -Control $form1 -Theme Dark
+
+ .EXAMPLE
+ PS C:\> Set-ControlTheme -Control $form1 -CustomColor @{ WindowColor = 'White'; ContainerBackColor = 'Gray'; BackColor... }
+ .NOTES
+ Created by SAPIEN Technologies, Inc.
+#>
+function Set-ControlTheme
+{
+ [CmdletBinding()]
+ param
+ (
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNull()]
+ [System.ComponentModel.Component]$Control,
+ [ValidateSet('Light', 'Dark')]
+ [string]$Theme = 'Dark',
+ [System.Collections.Hashtable]$CustomColor
+ )
+
+ $Font = [System.Drawing.Font]::New('Segoe UI', 9)
+
+ #Initialize the colors
+ if ($Theme -eq 'Dark')
+ {
+ $WindowColor = [System.Drawing.Color]::FromArgb(32, 32, 32)
+ $ContainerColor = [System.Drawing.Color]::FromArgb(45, 45, 45)
+ $BackColor = [System.Drawing.Color]::FromArgb(32, 32, 32)
+ $ForeColor = [System.Drawing.Color]::White
+ $BorderColor = [System.Drawing.Color]::DimGray
+ $SelectionBackColor = [System.Drawing.SystemColors]::Highlight
+ $SelectionForeColor = [System.Drawing.Color]::White
+ $MenuSelectionColor = [System.Drawing.Color]::DimGray
+ }
+ else
+ {
+ $WindowColor = [System.Drawing.Color]::White
+ $ContainerColor = [System.Drawing.Color]::WhiteSmoke
+ $BackColor = [System.Drawing.Color]::Gainsboro
+ $ForeColor = [System.Drawing.Color]::Black
+ $BorderColor = [System.Drawing.Color]::DimGray
+ $SelectionBackColor = [System.Drawing.SystemColors]::Highlight
+ $SelectionForeColor = [System.Drawing.Color]::White
+ $MenuSelectionColor = [System.Drawing.Color]::LightSteelBlue
+ }
+
+ if ($CustomColor)
+ {
+ #Check and Validate the custom colors:
+ $Color = $CustomColor.WindowColor -as [System.Drawing.Color]
+ if ($Color) { $WindowColor = $Color }
+ $Color = $CustomColor.ContainerColor -as [System.Drawing.Color]
+ if ($Color) { $ContainerColor = $Color }
+ $Color = $CustomColor.BackColor -as [System.Drawing.Color]
+ if ($Color) { $BackColor = $Color }
+ $Color = $CustomColor.ForeColor -as [System.Drawing.Color]
+ if ($Color) { $ForeColor = $Color }
+ $Color = $CustomColor.BorderColor -as [System.Drawing.Color]
+ if ($Color) { $BorderColor = $Color }
+ $Color = $CustomColor.SelectionBackColor -as [System.Drawing.Color]
+ if ($Color) { $SelectionBackColor = $Color }
+ $Color = $CustomColor.SelectionForeColor -as [System.Drawing.Color]
+ if ($Color) { $SelectionForeColor = $Color }
+ $Color = $CustomColor.MenuSelectionColor -as [System.Drawing.Color]
+ if ($Color) { $MenuSelectionColor = $Color }
+ }
+
+ #Define the custom renderer for the menus
+ #region Add-Type definition
+ try
+ {
+ [SAPIENTypes.SAPIENColorTable] | Out-Null
+ }
+ catch
+ {
+ if ($PSVersionTable.PSVersion.Major -ge 7)
+ {
+ $Assemblies = 'System.Windows.Forms', 'System.Drawing', 'System.Drawing.Primitives'
+ }
+ else
+ {
+ $Assemblies = 'System.Windows.Forms', 'System.Drawing'
+ }
+ Add-Type -ReferencedAssemblies $Assemblies -TypeDefinition "
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+namespace SAPIENTypes
+{
+ public class SAPIENColorTable : ProfessionalColorTable
+ {
+ Color ContainerBackColor;
+ Color BackColor;
+ Color BorderColor;
+ Color SelectBackColor;
+
+ public SAPIENColorTable(Color containerColor, Color backColor, Color borderColor, Color selectBackColor)
+ {
+ ContainerBackColor = containerColor;
+ BackColor = backColor;
+ BorderColor = borderColor;
+ SelectBackColor = selectBackColor;
+ }
+ public override Color MenuStripGradientBegin { get { return ContainerBackColor; } }
+ public override Color MenuStripGradientEnd { get { return ContainerBackColor; } }
+ public override Color ToolStripBorder { get { return BorderColor; } }
+ public override Color MenuItemBorder { get { return SelectBackColor; } }
+ public override Color MenuItemSelected { get { return SelectBackColor; } }
+ public override Color SeparatorDark { get { return BorderColor; } }
+ public override Color ToolStripDropDownBackground { get { return BackColor; } }
+ public override Color MenuBorder { get { return BorderColor; } }
+ public override Color MenuItemSelectedGradientBegin { get { return SelectBackColor; } }
+ public override Color MenuItemSelectedGradientEnd { get { return SelectBackColor; } }
+ public override Color MenuItemPressedGradientBegin { get { return ContainerBackColor; } }
+ public override Color MenuItemPressedGradientEnd { get { return ContainerBackColor; } }
+ public override Color MenuItemPressedGradientMiddle { get { return ContainerBackColor; } }
+ public override Color ImageMarginGradientBegin { get { return BackColor; } }
+ public override Color ImageMarginGradientEnd { get { return BackColor; } }
+ public override Color ImageMarginGradientMiddle { get { return BackColor; } }
+ }
+}"
+ }
+ #endregion
+
+ $colorTable = New-Object SAPIENTypes.SAPIENColorTable -ArgumentList $ContainerColor, $BackColor, $BorderColor, $MenuSelectionColor
+ $render = New-Object System.Windows.Forms.ToolStripProfessionalRenderer -ArgumentList $colorTable
+ [System.Windows.Forms.ToolStripManager]::Renderer = $render
+
+ #Set up our processing queue
+ $Queue = New-Object System.Collections.Generic.Queue[System.ComponentModel.Component]
+ $Queue.Enqueue($Control)
+
+ Add-Type -AssemblyName System.Core
+
+ #Only process the controls once.
+ $Processed = New-Object System.Collections.Generic.HashSet[System.ComponentModel.Component]
+
+ #Apply the colors to the controls
+ while ($Queue.Count -gt 0)
+ {
+ $target = $Queue.Dequeue()
+
+ #Skip controls we already processed
+ if ($Processed.Contains($target)) { continue }
+ $Processed.Add($target)
+
+ #Set the text color
+ $target.ForeColor = $ForeColor
+
+ #region Handle Controls
+ if ($target -is [System.Windows.Forms.Form])
+ {
+ #Set Font
+ $target.Font = $Font
+ $target.BackColor = $ContainerColor
+ }
+ elseif ($target -is [System.Windows.Forms.SplitContainer])
+ {
+ $target.BackColor = $BorderColor
+ }
+ elseif ($target -is [System.Windows.Forms.PropertyGrid])
+ {
+ $target.BackColor = $BorderColor
+ $target.ViewBackColor = $BackColor
+ $target.ViewForeColor = $ForeColor
+ $target.ViewBorderColor = $BorderColor
+ $target.CategoryForeColor = $ForeColor
+ $target.CategorySplitterColor = $ContainerColor
+ $target.HelpBackColor = $BackColor
+ $target.HelpForeColor = $ForeColor
+ $target.HelpBorderColor = $BorderColor
+ $target.CommandsBackColor = $BackColor
+ $target.CommandsBorderColor = $BorderColor
+ $target.CommandsForeColor = $ForeColor
+ $target.LineColor = $ContainerColor
+ }
+ elseif ($target -is [System.Windows.Forms.ContainerControl] -or
+ $target -is [System.Windows.Forms.Panel])
+ {
+ #Set the BackColor for the container
+ $target.BackColor = $ContainerColor
+
+ }
+ elseif ($target -is [System.Windows.Forms.GroupBox])
+ {
+ $target.FlatStyle = 'Flat'
+ }
+ elseif ($target -is [System.Windows.Forms.Button])
+ {
+ $target.FlatStyle = 'Flat'
+ $target.FlatAppearance.BorderColor = $BorderColor
+ $target.BackColor = $BackColor
+ }
+ elseif ($target -is [System.Windows.Forms.CheckBox] -or
+ $target -is [System.Windows.Forms.RadioButton] -or
+ $target -is [System.Windows.Forms.Label])
+ {
+ #$target.FlatStyle = 'Flat'
+ }
+ elseif ($target -is [System.Windows.Forms.ComboBox])
+ {
+ $target.BackColor = $BackColor
+ $target.FlatStyle = 'Flat'
+ }
+ elseif ($target -is [System.Windows.Forms.TextBox])
+ {
+ $target.BorderStyle = 'FixedSingle'
+ $target.BackColor = $BackColor
+ }
+ elseif ($target -is [System.Windows.Forms.DataGridView])
+ {
+ $target.GridColor = $BorderColor
+ $target.BackgroundColor = $ContainerColor
+ $target.DefaultCellStyle.BackColor = $WindowColor
+ $target.DefaultCellStyle.SelectionBackColor = $SelectionBackColor
+ $target.DefaultCellStyle.SelectionForeColor = $SelectionForeColor
+ $target.ColumnHeadersDefaultCellStyle.BackColor = $ContainerColor
+ $target.ColumnHeadersDefaultCellStyle.ForeColor = $ForeColor
+ $target.EnableHeadersVisualStyles = $false
+ $target.ColumnHeadersBorderStyle = 'Single'
+ $target.RowHeadersBorderStyle = 'Single'
+ $target.RowHeadersDefaultCellStyle.BackColor = $ContainerColor
+ $target.RowHeadersDefaultCellStyle.ForeColor = $ForeColor
+
+ }
+ elseif ($PSVersionTable.PSVersion.Major -le 5 -and $target -is [System.Windows.Forms.DataGrid])
+ {
+ $target.CaptionBackColor = $WindowColor
+ $target.CaptionForeColor = $ForeColor
+ $target.BackgroundColor = $ContainerColor
+ $target.BackColor = $WindowColor
+ $target.ForeColor = $ForeColor
+ $target.HeaderBackColor = $ContainerColor
+ $target.HeaderForeColor = $ForeColor
+ $target.FlatMode = $true
+ $target.BorderStyle = 'FixedSingle'
+ $target.GridLineColor = $BorderColor
+ $target.AlternatingBackColor = $ContainerColor
+ $target.SelectionBackColor = $SelectionBackColor
+ $target.SelectionForeColor = $SelectionForeColor
+ }
+ elseif ($target -is [System.Windows.Forms.ToolStrip])
+ {
+
+ $target.BackColor = $BackColor
+ $target.Renderer = $render
+
+ foreach ($item in $target.Items)
+ {
+ $Queue.Enqueue($item)
+ }
+ }
+ elseif ($target -is [System.Windows.Forms.ToolStripMenuItem] -or
+ $target -is [System.Windows.Forms.ToolStripDropDown] -or
+ $target -is [System.Windows.Forms.ToolStripDropDownItem])
+ {
+ $target.BackColor = $BackColor
+ foreach ($item in $target.DropDownItems)
+ {
+ $Queue.Enqueue($item)
+ }
+ }
+ elseif ($target -is [System.Windows.Forms.ListBox] -or
+ $target -is [System.Windows.Forms.ListView] -or
+ $target -is [System.Windows.Forms.TreeView])
+ {
+ $target.BackColor = $WindowColor
+ }
+ else
+ {
+ $target.BackColor = $BackColor
+ }
+ #endregion
+
+ if ($target -is [System.Windows.Forms.Control])
+ {
+ #Queue all the child controls
+ foreach ($child in $target.Controls)
+ {
+ $Queue.Enqueue($child)
+ }
+ if ($target.ContextMenuStrip)
+ {
+ $Queue.Enqueue($target.ContextMenuStrip);
+ }
+ }
+ }
+}
+#endregion
+
+
+$send_Click={
+
+ Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "$appName_box" -Tenant $tenant_box -Interactive
+
+
+}
+
+$tenant_box_TextChanged={
+ #TODO: Place custom script here
+
+}
+
+#region Control Helper Functions
+<#
+ .SYNOPSIS
+ Sets the emulation of the WebBrowser control for the application.
+
+ .DESCRIPTION
+ Sets the emulation of the WebBrowser control for the application using the installed version of IE.
+ This improves the WebBrowser control compatibility with newer html features.
+
+ .PARAMETER ExecutableName
+ The name of the executable E.g. PowerShellStudio.exe.
+ Default Value: The running executable name.
+
+ .EXAMPLE
+ PS C:\> Set-WebBrowserEmulation
+
+ .EXAMPLE
+ PS C:\> Set-WebBrowserEmulation PowerShell.exe
+#>
+function Set-WebBrowserEmulation
+{
+ param
+ (
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $ExecutableName = [System.IO.Path]::GetFileName([System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName)
+ )
+
+ #region Get IE Version
+ $valueNames = 'svcVersion', 'svcUpdateVersion', 'Version', 'W2kVersion'
+
+ $version = 0;
+ for ($i = 0; $i -lt $valueNames.Length; $i++)
+ {
+ $objVal = [Microsoft.Win32.Registry]::GetValue('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer', $valueNames[$i], '0')
+ $strVal = [System.Convert]::ToString($objVal)
+ if ($strVal)
+ {
+ $iPos = $strVal.IndexOf('.')
+ if ($iPos -gt 0)
+ {
+ $strVal = $strVal.Substring(0, $iPos)
+ }
+
+ $res = 0;
+ if ([int]::TryParse($strVal, [ref]$res))
+ {
+ $version = [Math]::Max($version, $res)
+ }
+ }
+ }
+
+ if ($version -lt 7)
+ {
+ $version = 7000
+ }
+ else
+ {
+ $version = $version * 1000
+ }
+ #endregion
+
+ [Microsoft.Win32.Registry]::SetValue('HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', $ExecutableName, $version)
+}
+
+
+#endregion
+
+$webbrowser1_DocumentCompleted=[System.Windows.Forms.WebBrowserDocumentCompletedEventHandler]{
+#Event Argument: $_ = [System.Windows.Forms.WebBrowserDocumentCompletedEventArgs]
+ #TODO: Place custom script here
+
+}
+]]>
+ 0
+ 1
+
+
\ No newline at end of file
diff --git a/Misc/Register Az App/regApp.psf b/Misc/Register Az App/regApp.psf
new file mode 100644
index 0000000..b3da792
--- /dev/null
+++ b/Misc/Register Az App/regApp.psf
@@ -0,0 +1,647 @@
+
+ 27bdac5f-55ae-4908-a755-ee5f598a9689
+ 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
+VlX6aU17drkyG2M0++W3NHfdHp08dVxHLt5USV370JcF3ue/aazFAADgJAyAH0jGM/w9nmJd2nVW
+yWX18vq71NVcppNbZ2rcuAlaF5qmioo0HT8aror2Tvka0nXiWJiKyip1a+86TR43Th8vXK1dp67o
+cuglRSZVqLu7WQnXL+tSdKxuHl6moMWHVej1yec2Dmy3/L2dKk6/oi0rF2jBkjU6HJ4sX3+PGgpv
+6/DRKNV0eOTzedVSnasrR08rr65UF7Yt0kcffqhx48Zp3KLPlVzWph7zqxFG/jeNtRgAAJyEAfCD
+yquewV75vcYLALWrw+NTn/UCQYM9nfJ6/err65ano13t7k7z5z6vV10D3/yFDvb1qKenR91+j9rb
+3fIbL+5jfOlgn/GnvfIa17Vuz3zxH3+PBszbGFRft998USC3t0t9fV3yWJcxvlSxp69XvhEvWNSv
+Th4CAIAxiQEwihkf9M7OTnV2+ughc5v3Yoz8mD5KDAAATsIAGKWMD7jxgc/NK6CHKbdAhUUutba2
+PvYRwAAA4CQMgFHK7+9UUnK6bt6KU3ZOPj1gWdn5uhp2Q5WV1fJ6H8PLJA+LAQDASRgAo5S/0xgA
+aaqtq7f/neA7JKdmqKyskgEAAI+AATBK3RkAFZXV9r8TfIfE5DSVlzMAAOBRMABGKQbA98cAAIBH
+xwAYpR7HAPDXp+vs+TT57X/wlGMAAMCjYwCMUiMGwGCXaitKVVrRcPdA7/M1qaysTI3eXvPXxhMH
+vS11Ki2tVLOvT5W3d+rF19Yqp6Pb/PPO1mqVllXKbX2x/kBPq8pLy9XYcef7+vWosapUZTUtGvbS
+AXe11JeptLRK7UM3J/V5VF1Wqkrjb824dk+X2lobVVXXIG9Plxqq69TWZb7AQEAxAADg0TEARqk7
+A6CytlHq7lDU7ml64Znn9fwv39GSL26pqiZe+xb9k5559hn9YfF2Zbdkaev0aZo0fpye//0/6e25
+X2r7/Nf1//zlT7XmYrm8lSe1dNLP9fxvf6N395xSbUerIlbN0Ktvv6hXXtqs5NIGFV2ZrTdf/oOe
+fe41rUsoUN/dFdCrktANev/F3+r5P7ysj+YdVklVmSL3vKE//P55/er9j3WlrkAhWxbp9Xcn6KU3
+n9eHizZp5rhx+mBNsFq6ze9lHDAMAAB4dAyAUerOAKhvalFDUb5mvD9fha2SGot1ec8R7Vo/T0t3
+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
+
+ Set-ControlTheme -Control $form1 -Theme Dark
+
+ .EXAMPLE
+ PS C:\> Set-ControlTheme -Control $form1 -CustomColor @{ WindowColor = 'White'; ContainerBackColor = 'Gray'; BackColor... }
+ .NOTES
+ Created by SAPIEN Technologies, Inc.
+#>
+function Set-ControlTheme
+{
+ [CmdletBinding()]
+ param
+ (
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNull()]
+ [System.ComponentModel.Component]$Control,
+ [ValidateSet('Light', 'Dark')]
+ [string]$Theme = 'Dark',
+ [System.Collections.Hashtable]$CustomColor
+ )
+
+ $Font = [System.Drawing.Font]::New('Segoe UI', 9)
+
+ #Initialize the colors
+ if ($Theme -eq 'Dark')
+ {
+ $WindowColor = [System.Drawing.Color]::FromArgb(32, 32, 32)
+ $ContainerColor = [System.Drawing.Color]::FromArgb(45, 45, 45)
+ $BackColor = [System.Drawing.Color]::FromArgb(32, 32, 32)
+ $ForeColor = [System.Drawing.Color]::White
+ $BorderColor = [System.Drawing.Color]::DimGray
+ $SelectionBackColor = [System.Drawing.SystemColors]::Highlight
+ $SelectionForeColor = [System.Drawing.Color]::White
+ $MenuSelectionColor = [System.Drawing.Color]::DimGray
+ }
+ else
+ {
+ $WindowColor = [System.Drawing.Color]::White
+ $ContainerColor = [System.Drawing.Color]::WhiteSmoke
+ $BackColor = [System.Drawing.Color]::Gainsboro
+ $ForeColor = [System.Drawing.Color]::Black
+ $BorderColor = [System.Drawing.Color]::DimGray
+ $SelectionBackColor = [System.Drawing.SystemColors]::Highlight
+ $SelectionForeColor = [System.Drawing.Color]::White
+ $MenuSelectionColor = [System.Drawing.Color]::LightSteelBlue
+ }
+
+ if ($CustomColor)
+ {
+ #Check and Validate the custom colors:
+ $Color = $CustomColor.WindowColor -as [System.Drawing.Color]
+ if ($Color) { $WindowColor = $Color }
+ $Color = $CustomColor.ContainerColor -as [System.Drawing.Color]
+ if ($Color) { $ContainerColor = $Color }
+ $Color = $CustomColor.BackColor -as [System.Drawing.Color]
+ if ($Color) { $BackColor = $Color }
+ $Color = $CustomColor.ForeColor -as [System.Drawing.Color]
+ if ($Color) { $ForeColor = $Color }
+ $Color = $CustomColor.BorderColor -as [System.Drawing.Color]
+ if ($Color) { $BorderColor = $Color }
+ $Color = $CustomColor.SelectionBackColor -as [System.Drawing.Color]
+ if ($Color) { $SelectionBackColor = $Color }
+ $Color = $CustomColor.SelectionForeColor -as [System.Drawing.Color]
+ if ($Color) { $SelectionForeColor = $Color }
+ $Color = $CustomColor.MenuSelectionColor -as [System.Drawing.Color]
+ if ($Color) { $MenuSelectionColor = $Color }
+ }
+
+ #Define the custom renderer for the menus
+ #region Add-Type definition
+ try
+ {
+ [SAPIENTypes.SAPIENColorTable] | Out-Null
+ }
+ catch
+ {
+ if ($PSVersionTable.PSVersion.Major -ge 7)
+ {
+ $Assemblies = 'System.Windows.Forms', 'System.Drawing', 'System.Drawing.Primitives'
+ }
+ else
+ {
+ $Assemblies = 'System.Windows.Forms', 'System.Drawing'
+ }
+ Add-Type -ReferencedAssemblies $Assemblies -TypeDefinition "
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+namespace SAPIENTypes
+{
+ public class SAPIENColorTable : ProfessionalColorTable
+ {
+ Color ContainerBackColor;
+ Color BackColor;
+ Color BorderColor;
+ Color SelectBackColor;
+
+ public SAPIENColorTable(Color containerColor, Color backColor, Color borderColor, Color selectBackColor)
+ {
+ ContainerBackColor = containerColor;
+ BackColor = backColor;
+ BorderColor = borderColor;
+ SelectBackColor = selectBackColor;
+ }
+ public override Color MenuStripGradientBegin { get { return ContainerBackColor; } }
+ public override Color MenuStripGradientEnd { get { return ContainerBackColor; } }
+ public override Color ToolStripBorder { get { return BorderColor; } }
+ public override Color MenuItemBorder { get { return SelectBackColor; } }
+ public override Color MenuItemSelected { get { return SelectBackColor; } }
+ public override Color SeparatorDark { get { return BorderColor; } }
+ public override Color ToolStripDropDownBackground { get { return BackColor; } }
+ public override Color MenuBorder { get { return BorderColor; } }
+ public override Color MenuItemSelectedGradientBegin { get { return SelectBackColor; } }
+ public override Color MenuItemSelectedGradientEnd { get { return SelectBackColor; } }
+ public override Color MenuItemPressedGradientBegin { get { return ContainerBackColor; } }
+ public override Color MenuItemPressedGradientEnd { get { return ContainerBackColor; } }
+ public override Color MenuItemPressedGradientMiddle { get { return ContainerBackColor; } }
+ public override Color ImageMarginGradientBegin { get { return BackColor; } }
+ public override Color ImageMarginGradientEnd { get { return BackColor; } }
+ public override Color ImageMarginGradientMiddle { get { return BackColor; } }
+ }
+}"
+ }
+ #endregion
+
+ $colorTable = New-Object SAPIENTypes.SAPIENColorTable -ArgumentList $ContainerColor, $BackColor, $BorderColor, $MenuSelectionColor
+ $render = New-Object System.Windows.Forms.ToolStripProfessionalRenderer -ArgumentList $colorTable
+ [System.Windows.Forms.ToolStripManager]::Renderer = $render
+
+ #Set up our processing queue
+ $Queue = New-Object System.Collections.Generic.Queue[System.ComponentModel.Component]
+ $Queue.Enqueue($Control)
+
+ Add-Type -AssemblyName System.Core
+
+ #Only process the controls once.
+ $Processed = New-Object System.Collections.Generic.HashSet[System.ComponentModel.Component]
+
+ #Apply the colors to the controls
+ while ($Queue.Count -gt 0)
+ {
+ $target = $Queue.Dequeue()
+
+ #Skip controls we already processed
+ if ($Processed.Contains($target)) { continue }
+ $Processed.Add($target)
+
+ #Set the text color
+ $target.ForeColor = $ForeColor
+
+ #region Handle Controls
+ if ($target -is [System.Windows.Forms.Form])
+ {
+ #Set Font
+ $target.Font = $Font
+ $target.BackColor = $ContainerColor
+ }
+ elseif ($target -is [System.Windows.Forms.SplitContainer])
+ {
+ $target.BackColor = $BorderColor
+ }
+ elseif ($target -is [System.Windows.Forms.PropertyGrid])
+ {
+ $target.BackColor = $BorderColor
+ $target.ViewBackColor = $BackColor
+ $target.ViewForeColor = $ForeColor
+ $target.ViewBorderColor = $BorderColor
+ $target.CategoryForeColor = $ForeColor
+ $target.CategorySplitterColor = $ContainerColor
+ $target.HelpBackColor = $BackColor
+ $target.HelpForeColor = $ForeColor
+ $target.HelpBorderColor = $BorderColor
+ $target.CommandsBackColor = $BackColor
+ $target.CommandsBorderColor = $BorderColor
+ $target.CommandsForeColor = $ForeColor
+ $target.LineColor = $ContainerColor
+ }
+ elseif ($target -is [System.Windows.Forms.ContainerControl] -or
+ $target -is [System.Windows.Forms.Panel])
+ {
+ #Set the BackColor for the container
+ $target.BackColor = $ContainerColor
+
+ }
+ elseif ($target -is [System.Windows.Forms.GroupBox])
+ {
+ $target.FlatStyle = 'Flat'
+ }
+ elseif ($target -is [System.Windows.Forms.Button])
+ {
+ $target.FlatStyle = 'Flat'
+ $target.FlatAppearance.BorderColor = $BorderColor
+ $target.BackColor = $BackColor
+ }
+ elseif ($target -is [System.Windows.Forms.CheckBox] -or
+ $target -is [System.Windows.Forms.RadioButton] -or
+ $target -is [System.Windows.Forms.Label])
+ {
+ #$target.FlatStyle = 'Flat'
+ }
+ elseif ($target -is [System.Windows.Forms.ComboBox])
+ {
+ $target.BackColor = $BackColor
+ $target.FlatStyle = 'Flat'
+ }
+ elseif ($target -is [System.Windows.Forms.TextBox])
+ {
+ $target.BorderStyle = 'FixedSingle'
+ $target.BackColor = $BackColor
+ }
+ elseif ($target -is [System.Windows.Forms.DataGridView])
+ {
+ $target.GridColor = $BorderColor
+ $target.BackgroundColor = $ContainerColor
+ $target.DefaultCellStyle.BackColor = $WindowColor
+ $target.DefaultCellStyle.SelectionBackColor = $SelectionBackColor
+ $target.DefaultCellStyle.SelectionForeColor = $SelectionForeColor
+ $target.ColumnHeadersDefaultCellStyle.BackColor = $ContainerColor
+ $target.ColumnHeadersDefaultCellStyle.ForeColor = $ForeColor
+ $target.EnableHeadersVisualStyles = $false
+ $target.ColumnHeadersBorderStyle = 'Single'
+ $target.RowHeadersBorderStyle = 'Single'
+ $target.RowHeadersDefaultCellStyle.BackColor = $ContainerColor
+ $target.RowHeadersDefaultCellStyle.ForeColor = $ForeColor
+
+ }
+ elseif ($PSVersionTable.PSVersion.Major -le 5 -and $target -is [System.Windows.Forms.DataGrid])
+ {
+ $target.CaptionBackColor = $WindowColor
+ $target.CaptionForeColor = $ForeColor
+ $target.BackgroundColor = $ContainerColor
+ $target.BackColor = $WindowColor
+ $target.ForeColor = $ForeColor
+ $target.HeaderBackColor = $ContainerColor
+ $target.HeaderForeColor = $ForeColor
+ $target.FlatMode = $true
+ $target.BorderStyle = 'FixedSingle'
+ $target.GridLineColor = $BorderColor
+ $target.AlternatingBackColor = $ContainerColor
+ $target.SelectionBackColor = $SelectionBackColor
+ $target.SelectionForeColor = $SelectionForeColor
+ }
+ elseif ($target -is [System.Windows.Forms.ToolStrip])
+ {
+
+ $target.BackColor = $BackColor
+ $target.Renderer = $render
+
+ foreach ($item in $target.Items)
+ {
+ $Queue.Enqueue($item)
+ }
+ }
+ elseif ($target -is [System.Windows.Forms.ToolStripMenuItem] -or
+ $target -is [System.Windows.Forms.ToolStripDropDown] -or
+ $target -is [System.Windows.Forms.ToolStripDropDownItem])
+ {
+ $target.BackColor = $BackColor
+ foreach ($item in $target.DropDownItems)
+ {
+ $Queue.Enqueue($item)
+ }
+ }
+ elseif ($target -is [System.Windows.Forms.ListBox] -or
+ $target -is [System.Windows.Forms.ListView] -or
+ $target -is [System.Windows.Forms.TreeView])
+ {
+ $target.BackColor = $WindowColor
+ }
+ else
+ {
+ $target.BackColor = $BackColor
+ }
+ #endregion
+
+ if ($target -is [System.Windows.Forms.Control])
+ {
+ #Queue all the child controls
+ foreach ($child in $target.Controls)
+ {
+ $Queue.Enqueue($child)
+ }
+ if ($target.ContextMenuStrip)
+ {
+ $Queue.Enqueue($target.ContextMenuStrip);
+ }
+ }
+ }
+}
+#endregion
+
+
+$send_Click={
+
+ $regJob = Start-Job -Name regJob -ScriptBlock {Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "$appName_box" -Tenant $tenant_box -Interactive}
+ while ($getRegJob[-1].State =$false)
+ {
+ $getRegJob = Get-Job -Name regJob
+ }
+ $resultsBox.Text = Receive-Job -Job $regJob
+
+}
+
+]]>
+ 0
+ 1
+
+
\ No newline at end of file
diff --git a/Misc/Register Az App/regApp.psf.psbuild b/Misc/Register Az App/regApp.psf.psbuild
new file mode 100644
index 0000000..1294b12
Binary files /dev/null and b/Misc/Register Az App/regApp.psf.psbuild differ
diff --git a/Sharepoint/gui/Re-Link/reLink.ps1 b/Sharepoint/gui/Re-Link/reLink.ps1
new file mode 100644
index 0000000..49730cc
--- /dev/null
+++ b/Sharepoint/gui/Re-Link/reLink.ps1
@@ -0,0 +1,38 @@
+$oldPrefix = "\\Srv75008s\juridique"
+$newPrefix = "%userprofile%\Skornik\Dossiers utilisateurs - Documents\Juridique"
+
+#$oldPrefix = "\\srv75008s\Commun"
+#$newPrefix = "%userprofile%\Skornik\Commun - Documents"
+
+
+$searchPath = "Z:\juridique"
+
+$dryRun = $FALSE
+
+$shell = new-object -com wscript.shell
+
+if ( $dryRun ) {
+ write-host "Dry run..." -foregroundcolor green -backgroundcolor black
+} else {
+ write-host "Warning : Real run" -foregroundcolor red -backgroundcolor black
+}
+
+dir $searchPath -filter *.lnk -recurse | foreach {
+ $lnk = $shell.createShortcut( $_.fullname )
+ $oldPath= $lnk.targetPath
+
+ $lnkRegex = "^" + [regex]::escape( $oldPrefix )
+
+ if ( $oldPath -match $lnkRegex ) {
+ $newPath = $oldPath -replace $lnkRegex, $newPrefix
+
+ write-host "Found: " + $_.fullname -foregroundcolor yellow -backgroundcolor black
+ write-host " Replace: " + $oldPath
+ write-host " With: " + $newPath
+
+ if ( !$dryRun ) {
+ $lnk.targetPath = $newPath
+ $lnk.Save()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sharepoint/gui/spmover/Events.ps1 b/Sharepoint/gui/spmover/Events.ps1
deleted file mode 100644
index c14e15c..0000000
Binary files a/Sharepoint/gui/spmover/Events.ps1 and /dev/null differ
diff --git a/Sharepoint/gui/spmover/Functions.ps1 b/Sharepoint/gui/spmover/Functions.ps1
index 82e7427..ed7e4f1 100644
Binary files a/Sharepoint/gui/spmover/Functions.ps1 and b/Sharepoint/gui/spmover/Functions.ps1 differ
diff --git a/Sharepoint/gui/spmover/exceptions.txt b/Sharepoint/gui/spmover/exceptions.txt
deleted file mode 100644
index cf10aca..0000000
--- a/Sharepoint/gui/spmover/exceptions.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-20240307 08:51:28: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:27:01: New-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:33:71 Line | 33 | … ) {$newControl = New-Object System.Windows.Forms.$($Xml.ToString())} | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Cannot find type [System.Windows.Forms.Image]: verify that the assembly containing this type is loaded.
-20240307 09:28:50: New-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:33:71 Line | 33 | … ) {$newControl = New-Object System.Windows.Forms.$($Xml.ToString())} | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Cannot find type [System.Windows.Forms.Image]: verify that the assembly containing this type is loaded.
-20240307 09:34:41: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:34:53: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:38:58: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:40:53: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:41:31: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Image" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:44:00: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:44:41: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:45:56: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:47:04: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception setting "Image": "Cannot convert the "System.Drawing.Bitmap" value of type "System.String" to type "System.Drawing.Image"."
-20240307 09:48:25: ForEach-Object: C:\Users\SebastienQUEROL\git.azuze.fr\ps-scripts\Sharepoint\gui\spmover\Functions.ps1:43:31 Line | 43 | $Xml.Attributes | ForEach-Object { | ~~~~~~~~~~~~~~~~ | Exception calling "Add" with "2" argument(s): "Item has already been added. Key in dictionary: 'lbl_byWho' Key being added: 'lbl_byWho'"
-20240307 11:16:28: InvalidOperation: Line | 45 | $Script:refs['btn_Start'].Add_Click($eventSB['btn_Start'].Cli … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Cannot index into a null array.