From 1f6e93552f7c561d10c0e53aa5c44038b72ebe94 Mon Sep 17 00:00:00 2001 From: Adrian Wells Date: Mon, 4 May 2020 10:06:19 -0400 Subject: [PATCH 1/5] Set OutPut path per TODO --- Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 index 864ca8b..b707ed7 100644 --- a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 +++ b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 @@ -21,7 +21,8 @@ #> #CODE STARTS HERE #--TODO: Put your Tenant ID here, similar to $GivenTenantID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -#--TODO: Put a designated location here for logs $OutputPath = 'example file path C:\...\Desktop\' + $env:USERNAME + "_" + $env:COMPUTERNAME + '.txt' + +$OutputPath = [Environment]::GetFolderPath("Desktop") + "\" + $env:USERNAME + "_" + $env:COMPUTERNAME + '.txt' $PolicyState3 = '' $PolicyState4 = '' From 2cdb3a73ac4251e934be8b017930d27d7d02c18b Mon Sep 17 00:00:00 2001 From: Adrian Wells Date: Mon, 4 May 2020 11:31:33 -0400 Subject: [PATCH 2/5] Address PSScriptAnalyzer PossibleIncorrectComparisonWithNull --- Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 index b707ed7..568877e 100644 --- a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 +++ b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 @@ -90,19 +90,19 @@ $TotalItemsNotInOneDrive = $DesktopItems + $DocumentsItems + $PicturesItems $TotalSizeNotInOneDrive = $DesktopSize + $DocumentsSize + $PicturesSize $PolicyState1 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMOptInWithWizard -$KFMOptInWithWizardSet = ($PolicyState1 -ne $null) -and ($PolicyState1 -eq $GivenTenantID) +$KFMOptInWithWizardSet = ($null -ne $PolicyState1 ) -and ($PolicyState1 -eq $GivenTenantID) $PolicyState2 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptIn $KFMSilentOptInSet = $PolicyState2 -eq $GivenTenantID Try{ $PolicyState3 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMBlockOptIn -$KFMBlockOptInSet = ($PolicyState3 -ne $null) -and ($PolicyState3 -eq 1) +$KFMBlockOptInSet = ($null -ne $PolicyState3) -and ($PolicyState3 -eq 1) }Catch{} Try{ $PolicyState4 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMBLockOptOut -$KFMBlockOptOutSet = ($PolicyState4 -ne $null) -and ($PolicyState4 -eq 1) +$KFMBlockOptOutSet = ($null -ne $PolicyState4) -and ($PolicyState4 -eq 1) }Catch{} $PolicyState5 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptInWithNotification From 52aa1bf4cd428f5fd862a08de497a9bbf46decba Mon Sep 17 00:00:00 2001 From: Adrian Wells Date: Mon, 4 May 2020 13:43:08 -0400 Subject: [PATCH 3/5] Comment and optimize --- Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 index 568877e..b0127cd 100644 --- a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 +++ b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 @@ -42,12 +42,9 @@ $DesktopPath = [environment]::GetFolderPath("Desktop") $DocumentsPath = [environment]::GetFolderPath("MyDocuments") $PicturesPath = [environment]::GetFolderPath("MyPictures") -$ODAccounts = Get-ChildItem -Path HKCU:\Software\Microsoft\OneDrive\Accounts -name - -$ODPath = foreach ($account in $ODAccounts){ - If($account -notlike 'Personal'){ - 'HKCU:\Software\Microsoft\OneDrive\Accounts\' + $account - } +# List of OneDrive accounts based upon name excluding accounts with the name 'Personal' +$ODPath = Get-ChildItem -Path HKCU:\Software\Microsoft\OneDrive\Accounts -name -Exclude 'Personal' | ForEach-Object { + 'HKCU:\Software\Microsoft\OneDrive\Accounts\' + $_ } foreach ($path in $ODPath){ @@ -137,4 +134,6 @@ Add-Content $OutputPath "$KFMSilentOptInSet | KFM_Silent_Opt_In_Set" Add-Content $OutputPath "$SendNotificationWithSilent | KFM_Silent_With_Notification_Set" Add-Content $OutputPath "$KFMBlockOptInSet | KFM_Block_Opt_In_Set" Add-Content $OutputPath "$KFMBlockOptOutSet | KFM_Block_Opt_Out_Set `n" -Add-Content $OutputPath "$ODVersion | OneDrive Sync client version" \ No newline at end of file +Add-Content $OutputPath "$ODVersion | OneDrive Sync client version" + +Start-Process $OutputPath \ No newline at end of file From 73633e4117c7a4aeb155f5cfd8239f3b0448b766 Mon Sep 17 00:00:00 2001 From: Adrian Wells Date: Mon, 4 May 2020 14:34:06 -0400 Subject: [PATCH 4/5] Add comments to attempt to be more clear --- Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 index b0127cd..c6a4d4c 100644 --- a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 +++ b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 @@ -47,6 +47,8 @@ $ODPath = Get-ChildItem -Path HKCU:\Software\Microsoft\OneDrive\Accounts -name - 'HKCU:\Software\Microsoft\OneDrive\Accounts\' + $_ } +# Review each OneDrive Path to determine if equal to the given Microsoft tenant ID +# If matching then determine the Known Folder Scan State and break to continue foreach ($path in $ODPath){ $ConfiguredTenantID = Get-ItemPropertyValue -path $path -name ConfiguredTenantID If ($GivenTenantID -eq $ConfiguredTenantID){ @@ -56,12 +58,16 @@ foreach ($path in $ODPath){ } } +# LastMigrationScanResult=DWORD:40 **appears** to be unsuccesful +# LastMigrationScanResult=DWORD:50 **appears** to be another unsucceful state $KFMGPOEligible = (($KFMScanState -ne 40) -and ($KFMScanState -ne 50)) +# Determine state of the local user path to the ODPath identified earlier $DesktopInOD = ($DesktopPath -like $SpecificODPath) $DocumentsInOD = ($DocumentsPath -like $SpecificODPath) $PicturesInOD = ($PicturesPath -like $SpecificODPath) +# If KFM is not in place count the items at risk if(!$DesktopInOD){ foreach ($item in (Get-ChildItem $DesktopPath -recurse | Where-Object {-not $_.PSIsContainer} | ForEach-Object {$_.FullName})) { $DesktopSize += (Get-Item $item).length @@ -86,6 +92,7 @@ if(!$PicturesInOD){ $TotalItemsNotInOneDrive = $DesktopItems + $DocumentsItems + $PicturesItems $TotalSizeNotInOneDrive = $DesktopSize + $DocumentsSize + $PicturesSize +# Policy state checks $PolicyState1 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMOptInWithWizard $KFMOptInWithWizardSet = ($null -ne $PolicyState1 ) -and ($PolicyState1 -eq $GivenTenantID) @@ -105,10 +112,10 @@ $KFMBlockOptOutSet = ($null -ne $PolicyState4) -and ($PolicyState4 -eq 1) $PolicyState5 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptInWithNotification $SendNotificationWithSilent = $PolicyState5 -eq 1 +# Version details $ODVersion = Get-ItemPropertyValue -Path HKCU:\Software\Microsoft\OneDrive -Name Version - - +# Assemble the data to be outputted Set-Content $OutputPath "$KFMGPOEligible | Device_is_KFM_GPO_eligible" if(!$DesktopInOD -or !$DocumentsInOD -or !$PicturesInOD){ Add-Content $OutputPath "$TotalItemsNotInOneDrive | Total_items_not_in_OneDrive" @@ -135,5 +142,3 @@ Add-Content $OutputPath "$SendNotificationWithSilent | KFM_Silent_With_Notificat Add-Content $OutputPath "$KFMBlockOptInSet | KFM_Block_Opt_In_Set" Add-Content $OutputPath "$KFMBlockOptOutSet | KFM_Block_Opt_Out_Set `n" Add-Content $OutputPath "$ODVersion | OneDrive Sync client version" - -Start-Process $OutputPath \ No newline at end of file From 91964e198bd558d27658e85f53a57561722e82d8 Mon Sep 17 00:00:00 2001 From: Adrian Wells Date: Mon, 4 May 2020 14:37:55 -0400 Subject: [PATCH 5/5] Quick try and catch changes to reduce output noise (WIP) --- .../Sync-KFM-Deployment/KFM_Deployment.ps1 | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 index c6a4d4c..f33532f 100644 --- a/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 +++ b/Scripts/Sync-KFM-Deployment/KFM_Deployment.ps1 @@ -93,24 +93,45 @@ $TotalItemsNotInOneDrive = $DesktopItems + $DocumentsItems + $PicturesItems $TotalSizeNotInOneDrive = $DesktopSize + $DocumentsSize + $PicturesSize # Policy state checks -$PolicyState1 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMOptInWithWizard -$KFMOptInWithWizardSet = ($null -ne $PolicyState1 ) -and ($PolicyState1 -eq $GivenTenantID) +try { + $PolicyState1 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMOptInWithWizard + $KFMOptInWithWizardSet = ($null -ne $PolicyState1 ) -and ($PolicyState1 -eq $GivenTenantID) +} +catch { + +} -$PolicyState2 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptIn -$KFMSilentOptInSet = $PolicyState2 -eq $GivenTenantID +try { + $PolicyState2 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptIn + $KFMSilentOptInSet = $PolicyState2 -eq $GivenTenantID +} +catch { + +} -Try{ -$PolicyState3 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMBlockOptIn -$KFMBlockOptInSet = ($null -ne $PolicyState3) -and ($PolicyState3 -eq 1) -}Catch{} +try { + $PolicyState3 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMBlockOptIn + $KFMBlockOptInSet = ($null -ne $PolicyState3) -and ($PolicyState3 -eq 1) +} +catch { + +} -Try{ -$PolicyState4 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMBLockOptOut -$KFMBlockOptOutSet = ($null -ne $PolicyState4) -and ($PolicyState4 -eq 1) -}Catch{} +try { + $PolicyState4 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMBLockOptOut + $KFMBlockOptOutSet = ($null -ne $PolicyState4) -and ($PolicyState4 -eq 1) +} +catch { + +} -$PolicyState5 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptInWithNotification -$SendNotificationWithSilent = $PolicyState5 -eq 1 +try { + $PolicyState5 = Get-ItemPropertyValue -path HKLM:\SOFTWARE\Policies\Microsoft\OneDrive -name KFMSilentOptInWithNotification + $SendNotificationWithSilent = $PolicyState5 -eq 1 +} +catch { + +} # Version details $ODVersion = Get-ItemPropertyValue -Path HKCU:\Software\Microsoft\OneDrive -Name Version @@ -141,4 +162,4 @@ Add-Content $OutputPath "$KFMSilentOptInSet | KFM_Silent_Opt_In_Set" Add-Content $OutputPath "$SendNotificationWithSilent | KFM_Silent_With_Notification_Set" Add-Content $OutputPath "$KFMBlockOptInSet | KFM_Block_Opt_In_Set" Add-Content $OutputPath "$KFMBlockOptOutSet | KFM_Block_Opt_Out_Set `n" -Add-Content $OutputPath "$ODVersion | OneDrive Sync client version" +Add-Content $OutputPath "$ODVersion | OneDrive Sync client version" \ No newline at end of file