Skip to content

Commit

Permalink
fix: Fix logs in Users Deprovisioning script (#381)
Browse files Browse the repository at this point in the history
Co-authored-by: Mike Grytsai <71635461+mgrytsai@users.noreply.github.com>
  • Loading branch information
arjankowski and mgrytsai authored Aug 19, 2022
1 parent 077470c commit c85f77b
Showing 1 changed file with 35 additions and 19 deletions.
54 changes: 35 additions & 19 deletions examples/User Deprovisioning/Users_Deprovision.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#APP SETUP
#README: This powershell script will use the Box CLI to deprovision a list of users by first transfering user content to the current admin user's root folder (Transfer content default: "Y") before deleting that user.
#README: This powershell script will use the Box CLI to deprovision a list of users by first transferring user content to the current admin user's root folder (Transfer content default: "Y") before deleting that user.

#APPLICATION ACCESS LEVEL (FOR JWT APPS): App + Enterprise Access
#APPLICATION SCOPES: Read & Write all folders stored in Box, Manage users, & Make API calls using the as-user header
Expand All @@ -21,8 +21,7 @@ $EmployeeArchiveFolderName = "Employee Archive"
### SCRIPT BUSINESS LOGIC ###########################################################
########################################################################################

$EmployeeArchiveFolderID =$null

$EmployeeArchiveFolderID = $null

# Function to write to logs
function Write-Log { param ([string]$message, [string]$errorMessage = $null, [Exception]$exception = $null, [string]$output = $false, [string]$color = "Green")
Expand Down Expand Up @@ -101,7 +100,7 @@ Function Start-Script {
# Get employees json file and convert from CSV to an array of objects
Try {
$Employees = Import-Csv $EmployeeList
Write-Log "Importing csv of users to deprovision" -output true
Write-Log "Importing csv of users to deprovision." -output true
}
Catch {
Write-Log "Error reading employee data from CSV file $EmployeeList" -exception $_.Exception -output true -color Red
Expand All @@ -113,6 +112,8 @@ Function Start-Script {
$UserResp = "$(box users:get --json 2>&1)"
$User = $UserResp | ConvertFrom-Json
$UserId = $User.id
Write-Log "Successfully get current user: $($User.login), ID: $($User.id)." -output true
Write-Log $UserResp
} catch {
Write-Log "Could not get the current user. See log for details." -errorMessage $UserResp -output true -color Red
break
Expand All @@ -122,27 +123,30 @@ Function Start-Script {
# List root folder contents
try {
$RootFolderResp = "$(box folders:items 0 --sort=name --direction=ASC --json 2>&1)"
$RootFolder = $RootFolderResp| ConvertFrom-Json
$RootFolder = $RootFolderResp | ConvertFrom-Json
} catch {
Write-Log "Could not get root directory for current user (ID: $UserId). See log for details. " -errorMessage $RootFolderResp -output true -color Red
break
}

# Check if "Employee Archive" folder already exists
ForEach($Result in $RootFolder) {
if( $Result.name -eq $EmployeeArchiveFolderName) {
$EmployeeArchiveFolderID = $Result.id
Write-Log "Employee Archive folder already exists with folder ID: $($EmployeeArchiveFolderID)" -output true
ForEach($FolderItem in $RootFolder) {
if($FolderItem.name -eq $EmployeeArchiveFolderName) {
$EmployeeArchiveFolderID = $FolderItem.id
Write-Log "'$EmployeeArchiveFolderName' folder already exists with folder ID: $($EmployeeArchiveFolderID)." -output true
break
}
}

# Create new "Employee Archive" folder if it doens't exist
if($null -eq $EmployeeArchiveFolderID) {
try {
$EmployeeArchiveFolderID = "$(box folders:create 0 $EmployeeArchiveFolderName --id-only 2>&1)"
Write-Log "Created new Employee Archive root folder with ID: $($EmployeeArchiveFolderID); name: $($EmployeeArchiveFolderName)" -output true
$EmployeeArchiveFolderResp = "$(box folders:create 0 "$EmployeeArchiveFolderName" --fields="id" --json 2>&1)"
$EmployeeArchiveFolderID = $EmployeeArchiveFolderResp | ConvertFrom-Json | ForEach-Object { $_.id }
Write-Log "Successfully created new '$EmployeeArchiveFolderName' root folder with ID: $($EmployeeArchiveFolderID)." -output true
Write-Log $EmployeeArchiveFolderResp
} catch {
Write-Log "Could not create new Employee Archive root folder. See log for details." -errorMessage $EmployeeArchiveFolderID -output true -color Red
Write-Log "Could not create new '$EmployeeArchiveFolderName' root folder. See log for details." -errorMessage $EmployeeArchiveFolderResp -output true -color Red
break
}
}
Expand All @@ -160,10 +164,12 @@ Function Start-Script {
continue
} elseif (($FoundEmployee.Length -gt 1) -or $($FoundEmployee.total_count) -gt 1) {
Write-Log "Multiple matching users found for email: $($Employee.email). Skipping this employee." -output true -color Yellow
Write-Log $FoundEmployeeResp
continue
} else {
$FoundEmployeeID = $FoundEmployee.id
Write-Log "Found employee $($FoundEmployee.name) with ID: $FoundEmployeeID for email: $($Employee.email)" -output true
Write-Log "Found employee $($FoundEmployee.name) with ID: $FoundEmployeeID for email: $($Employee.email)." -output true
Write-Log $FoundEmployeeResp
}
} catch {
Write-Log "Skipping this employee. Could not find user for email: $($Employee.email). See log for details." -errorMessage $FoundEmployeeResp -output true -color Red
Expand All @@ -172,11 +178,13 @@ Function Start-Script {

if($TransferContent -eq "Y") {
# Transfer users content to current user's root folder before deleting user
Write-Log "Transfering $($FoundEmployee.name) content over to current user's Root folder with name ""$($FoundEmployee.login) - $($FoundEmployee.name)'s Files and Folders""" -output true
Write-Log "Transferring $($FoundEmployee.name) content over to current user's Root folder with name ""$($FoundEmployee.login) - $($FoundEmployee.name)'s Files and Folders""..." -output true

try {
$NewFolderResp = "$(box users:transfer-content $FoundEmployeeID $UserId --json 2>&1)"
$NewFolder = $NewFolderResp | ConvertFrom-Json
Write-Log "Successfully transferred content to ""$($FoundEmployee.login) - $($FoundEmployee.name)'s Files and Folders""." -output true
Write-Log $NewFolderResp
} catch {
Write-Log "Skipping this employee. Could not transfer $($FoundEmployee.name) content over to current user's Root folder. See log for details." -errorMessage $NewFolderResp -output true -color Red
continue
Expand All @@ -186,24 +194,32 @@ Function Start-Script {
$TransferredFolder = $NewFolder.id
try {
$MoveFolderResp = "$(box folders:move $TransferredFolder $EmployeeArchiveFolderID --json 2>&1)"
Write-Log "Transfered employee content $($FoundEmployee.name) with User ID: $($FoundEmployeeID) to Employee Archive Folder" -output true
$MoveFolderResp | ConvertFrom-Json | Out-Null
Write-Log "Successfully moved transferred employee content $($FoundEmployee.name) with User ID: $($FoundEmployeeID) to '$EmployeeArchiveFolderName' folder with ID: $EmployeeArchiveFolderID." -output true
Write-Log $MoveFolderResp
} catch {
Write-Log "Skipping this employee. Could not move transfered folder with ID: $TransferredFolder to $EmployeeArchiveFolderName folder with ID: $EmployeeArchiveFolderID. See log for details." -errorMessage $MoveFolderResp -output true -color Red
Write-Log "Skipping this employee. Could not move transferred folder with ID: $TransferredFolder to $EmployeeArchiveFolderName folder with ID: $EmployeeArchiveFolderID. See log for details." -errorMessage $MoveFolderResp -output true -color Red
continue
}
}

# Delete user
try {
$DeleteUserResp = "$(box users:delete $FoundEmployeeID --json 2>&1)"
Write-Log "Deleted employee $($FoundEmployee.name) with ID: $($FoundEmployeeID)" -output true
# Because of the "-q" flag, the users:delete command returns an error if it occurs or null otherwise
$DeleteUserResp = "$(box users:delete $FoundEmployeeID -q 2>&1)"
if(!$DeleteUserResp) {
Write-Log "Successfully deleted employee $($FoundEmployee.name) with ID: $($FoundEmployeeID)." -output true
} else {
Write-Log "Could not delete employee $($FoundEmployee.name) with ID: $($FoundEmployeeID). See log for details." -errorMessage $DeleteUserResp -output true -color Red
continue
}
} catch {
Write-Log "Could not delete employee $($FoundEmployee.name) with ID: $($FoundEmployeeID). See log for details." -errorMessage $DeleteUserResp -output true -color Red
continue
}
}

Write-Log "complete"
Write-Log "Complete User Deprovisioning script."
}

Start-Script

0 comments on commit c85f77b

Please sign in to comment.