Add headless macOS CLI workflow
This commit is contained in:
@@ -782,7 +782,7 @@ function Add-GraphObjectProperties
|
||||
|
||||
if($objects.Count -gt 0 -and $SortProperty -and ($objects[0] | GM -MemberType NoteProperty -Name $SortProperty))
|
||||
{
|
||||
$objects = $objects | sort -Property $SortProperty
|
||||
$objects = $objects | Sort-Object -Property $SortProperty
|
||||
}
|
||||
|
||||
$objects
|
||||
@@ -1400,12 +1400,77 @@ function Invoke-SilentBatchJob
|
||||
}
|
||||
}
|
||||
|
||||
function New-GraphSilentBatchForm
|
||||
{
|
||||
param($Controls)
|
||||
|
||||
$form = New-HeadlessForm $Controls
|
||||
|
||||
foreach($control in $Controls)
|
||||
{
|
||||
New-Variable -Name $control.Name -Value $control -Force -Scope Global
|
||||
}
|
||||
|
||||
$form
|
||||
}
|
||||
|
||||
function New-GraphSilentExportForm
|
||||
{
|
||||
$controls = @(
|
||||
(New-HeadlessControl -Name "txtExportPath" -Type "TextBox"),
|
||||
(New-HeadlessControl -Name "txtExportNameFilter" -Type "TextBox"),
|
||||
(New-HeadlessControl -Name "chkAddObjectType" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "chkExportAssignments" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "chkAddCompanyName" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "dgObjectsToExport" -Type "DataGrid")
|
||||
)
|
||||
|
||||
$form = New-GraphSilentBatchForm $controls
|
||||
Set-XamlProperty $form "txtExportPath" "Text" (?? (Get-Setting "" "LastUsedRoot") (Get-SettingValue "RootFolder"))
|
||||
Set-XamlProperty $form "chkAddObjectType" "IsChecked" $true
|
||||
Set-XamlProperty $form "chkExportAssignments" "IsChecked" (Get-SettingValue "ExportAssignments")
|
||||
Set-XamlProperty $form "chkAddCompanyName" "IsChecked" (Get-SettingValue "AddCompanyName")
|
||||
|
||||
$form
|
||||
}
|
||||
|
||||
function New-GraphSilentImportForm
|
||||
{
|
||||
$path = Get-Setting "" "LastUsedFullPath"
|
||||
if($path)
|
||||
{
|
||||
$path = [IO.Directory]::GetParent($path).FullName
|
||||
}
|
||||
|
||||
$controls = @(
|
||||
(New-HeadlessControl -Name "txtImportPath" -Type "TextBox"),
|
||||
(New-HeadlessControl -Name "txtImportNameFilter" -Type "TextBox"),
|
||||
(New-HeadlessControl -Name "lblMigrationTableInfo" -Type "Label"),
|
||||
(New-HeadlessControl -Name "chkAddObjectType" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "chkImportScopes" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "chkImportAssignments" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "chkReplaceDependencyIDs" -Type "CheckBox"),
|
||||
(New-HeadlessControl -Name "cbImportType" -Type "ComboBox"),
|
||||
(New-HeadlessControl -Name "dgObjectsToImport" -Type "DataGrid")
|
||||
)
|
||||
|
||||
$form = New-GraphSilentBatchForm $controls
|
||||
Set-XamlProperty $form "txtImportPath" "Text" (?? $path (Get-SettingValue "RootFolder"))
|
||||
Set-XamlProperty $form "chkAddObjectType" "IsChecked" $true
|
||||
Set-XamlProperty $form "chkImportAssignments" "IsChecked" (Get-SettingValue "ImportAssignments")
|
||||
Set-XamlProperty $form "chkImportScopes" "IsChecked" (Get-SettingValue "ImportScopeTags")
|
||||
Set-XamlProperty $form "chkReplaceDependencyIDs" "IsChecked" $true
|
||||
Set-XamlProperty $form "cbImportType" "ItemsSource" $script:lstImportTypes
|
||||
Set-XamlProperty $form "cbImportType" "SelectedValue" (Get-SettingValue "ImportType" "alwaysImport")
|
||||
|
||||
$form
|
||||
}
|
||||
|
||||
function Start-GraphSilentBulkExport
|
||||
{
|
||||
param($settingsObj)
|
||||
|
||||
$script:exportForm = Get-XamlObject ($global:AppRootFolder + "\Xaml\BulkExportForm.xaml") -AddVariables
|
||||
if(-not $script:exportForm) { return }
|
||||
$script:exportForm = New-GraphSilentExportForm
|
||||
|
||||
$script:exportObjects = Get-GraphBatchObjectTypes $settingsObj.BulkExport
|
||||
|
||||
@@ -1414,8 +1479,6 @@ function Start-GraphSilentBulkExport
|
||||
if(-not $viewObj.Title) { continue }
|
||||
|
||||
if($viewObj.ObjectType.ShowButtons -is [Object[]] -and $viewObj.ObjectType.ShowButtons -notcontains "Export") { continue }
|
||||
|
||||
Add-GraphExportExtensions $script:exportForm 0 $viewObj.ObjectType
|
||||
}
|
||||
|
||||
Set-BatchProperties $settingsObj.BulkExport $script:exportForm
|
||||
@@ -1449,8 +1512,7 @@ function Start-GraphSilentBulkImport
|
||||
{
|
||||
param($settingsObj)
|
||||
|
||||
$script:importForm = Get-XamlObject ($global:AppRootFolder + "\Xaml\BulkImportForm.xaml") -AddVariables
|
||||
if(-not $script:importForm) { return }
|
||||
$script:importForm = New-GraphSilentImportForm
|
||||
|
||||
# Get all objects but not selected
|
||||
# This will allow dependencies
|
||||
@@ -1479,11 +1541,10 @@ function Start-GraphSilentBulkImport
|
||||
if(-not $viewObj.Title) { continue }
|
||||
|
||||
if($viewObj.ObjectType.ShowButtons -is [Object[]] -and $viewObj.ObjectType.ShowButtons -notcontains "Import") { continue }
|
||||
|
||||
Add-GraphImportExtensions $script:importForm 0 $viewObj.ObjectType
|
||||
}
|
||||
|
||||
Set-BatchProperties $settingsObj.BulkImport $script:importForm
|
||||
Set-XamlProperty $script:importForm "lblMigrationTableInfo" "Content" (Get-MigrationTableInfo)
|
||||
|
||||
$global:dgObjectsToImport.ItemsSource = @($script:importObjects)
|
||||
|
||||
@@ -2358,7 +2419,7 @@ function Get-GraphFileObjects
|
||||
}
|
||||
|
||||
$fileArr = @()
|
||||
foreach($file in (Get-Item -path "$path\*.json" @params))
|
||||
foreach($file in (Get-Item -path (Join-Path $path "*.json") @params))
|
||||
{
|
||||
if($ObjectType.LoadObject)
|
||||
{
|
||||
@@ -2864,7 +2925,7 @@ function Add-GroupMigrationObject
|
||||
# Export group info to json file for possible import
|
||||
$grouspPath = Join-Path $path "Groups"
|
||||
if(-not (Test-Path $grouspPath)) { mkdir -Path $grouspPath -Force -ErrorAction SilentlyContinue | Out-Null }
|
||||
$fileName = "$grouspPath\$((Remove-InvalidFileNameChars $groupObj.displayName)).json"
|
||||
$fileName = Join-Path $grouspPath "$((Remove-InvalidFileNameChars $groupObj.displayName)).json"
|
||||
Save-GraphObjectToFile $groupObj $fileName
|
||||
}
|
||||
}
|
||||
@@ -2907,7 +2968,7 @@ function Add-GraphMigrationObject
|
||||
# Export group info to json file for possible import
|
||||
$grouspPath = Join-Path $path "Groups"
|
||||
if(-not (Test-Path $grouspPath)) { mkdir -Path $grouspPath -Force -ErrorAction SilentlyContinue | Out-Null }
|
||||
$fileName = "$grouspPath\$((Remove-InvalidFileNameChars $graphObj.displayName)).json"
|
||||
$fileName = Join-Path $grouspPath "$((Remove-InvalidFileNameChars $graphObj.displayName)).json"
|
||||
Save-GraphObjectToFile $graphObj $fileName
|
||||
}
|
||||
}
|
||||
@@ -3050,7 +3111,7 @@ function Get-GraphMigrationObjectsFromFile
|
||||
if($global:GraphMigrationTable)
|
||||
{
|
||||
$fi = [IO.FileInfo]$global:GraphMigrationTable
|
||||
$groupFi = [IO.FileInfo]($fi.DirectoryName + "\Groups\$((Remove-InvalidFileNameChars $migTableGroupName)).json")
|
||||
$groupFi = [IO.FileInfo](Join-Path (Join-Path $fi.DirectoryName "Groups") "$((Remove-InvalidFileNameChars $migTableGroupName)).json")
|
||||
}
|
||||
|
||||
if($groupFi.Exists -eq $true)
|
||||
@@ -3197,13 +3258,13 @@ function Add-GraphDependencyObjects
|
||||
continue
|
||||
}
|
||||
|
||||
if([IO.Directory]::Exists(($importPath + "\" + $dep)))
|
||||
if([IO.Directory]::Exists((Join-Path $importPath $dep)))
|
||||
{
|
||||
$path = ($importPath + "\" + $dep)
|
||||
$path = (Join-Path $importPath $dep)
|
||||
}
|
||||
elseif([IO.Directory]::Exists(($parentPath + "\" + $dep)))
|
||||
elseif([IO.Directory]::Exists((Join-Path $parentPath $dep)))
|
||||
{
|
||||
$path = ($parentPath + "\" + $dep)
|
||||
$path = (Join-Path $parentPath $dep)
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3674,7 +3735,7 @@ function Invoke-GraphBatchRequest
|
||||
$retryAfter = 0
|
||||
$tmpResults = Invoke-GraphRequest -Url "`$batch" -Body $json -Method "POST"
|
||||
|
||||
foreach($batchResult in ($tmpResults.responses | Sort -Property Id))
|
||||
foreach($batchResult in ($tmpResults.responses | Sort-Object -Property Id))
|
||||
{
|
||||
if($batchResult.Status -ge 300 -or -not $batchResult.body)
|
||||
{
|
||||
@@ -4151,7 +4212,7 @@ function Show-GraphObjectInfo
|
||||
if($prop.Name.Contains('@') -or $prop.Name.Contains('#')) { continue }
|
||||
$objProps += ([PSCustomObject]@{ Name=$prop.Name;Value=$prop })
|
||||
}
|
||||
$objProps = $objProps | sort -Property Name
|
||||
$objProps = $objProps | Sort-Object -Property Name
|
||||
Set-XamlProperty $script:detailsForm "lstObjectProperties" "ItemsSource" $objProps
|
||||
|
||||
Add-XamlEvent $script:detailsForm "btnObjectColumnsReset" "Add_Click" -scriptBlock ([scriptblock]{
|
||||
@@ -4633,4 +4694,4 @@ function Confirm-GraphMatchFilter
|
||||
}
|
||||
}
|
||||
return $true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user