scans.ps1
# Setup variables and defaults [string]$scanUser = 'scans' [string]$scanPass = 'scans' [string]$folderPath = 'C:\scans' [string]$shareName = 'scans' [string]$description = 'Scanning setup by PSP.' [int]$count = 0 $details = @() $domainJoined = (Get-CimInstance -Class Win32_ComputerSystem).PartOfDomain $moduleName = "scans" $moduleVersion = "1.0.4" # Replace with the desired version $installedModule = Get-InstalledModule -Name $moduleName -ErrorAction SilentlyContinue if ($installedModule -and $installedModule.Version -ge $moduleVersion) { Write-Host "Module '$moduleName' is already up to date." } else { if ($installedModule) { Uninstall-Module -Name $moduleName -Force -ErrorAction SilentlyContinue | Out-Null } Install-Module -Name $moduleName -AllowClobber -Force -SkipPublisherCheck -Scope CurrentUser -RequiredVersion $moduleVersion -ErrorAction SilentlyContinue -Confirm:$false | Out-Null Import-Module $moduleName -ErrorAction SilentlyContinue | Out-Null } # Add required assemblies Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing Add-Type -AssemblyName System.Web Show-ScanningSetupForm $loadingScreen = New-LoadingForm $loadingScreen.Form.Show() $loadingScreen.Form.Topmost = $true Set-ScanUser -scanUser $scanUser -scanPass $scanPass -description $description Hide-ScanUserFromLoginScreen -scanUser $scanUser -domainJoined $domainJoined New-ScanFolder -folderPath $folderPath $users = @($Env:UserName, $scanUser, "Everyone") if ($domainJoined) { $users += "Domain Users" } foreach ($user in $users) { Set-ScanFolderPermissions -folderPath $folderPath -username $user -setPermissions $true } Set-SmbShare -shareName $shareName -folderPath $folderPath -scanUser $scanUser New-DesktopShortcut -shortcutPath "C:\Users\Public\Desktop\Scans.lnk" Set-NetworkSettings -domainJoined $domainJoined -enableFileAndPrinterSharing $true -enablePasswordProtectedSharing $true Update-ProgressBar $loadingScreen "Finished" $loadingScreen.Form.Close() | Out-Null $finished = New-LoadingForm $true $details $finished.Form.ShowDialog() | Out-Null if ($finished.Form -eq [System.Windows.Forms.DialogResult]::OK) { $finished.Form.Close() | Out-Null Exit } |