Public/Sync-AeriesItemAssignment.ps1
Function Sync-AeriesItemAssignment { <# .SYNOPSIS Assign users to items in Aeries .DESCRIPTION import a csv with the following headers: UserID - Should be student or staff Aeries User ID UserType - S for Student T for Staff SerialNumber - Serial Number of device to match, if incomplete put * into csv as a wildcard match .EXAMPLE Sync-AeriesItemAssignment .PARAMETER .INPUTS .OUTPUTS .NOTES .LINK #> [CmdletBinding()] #Enable all the default paramters, including -Verbose Param( [Parameter( Mandatory, Position=0)] [string]$config, [Parameter( Mandatory, Position=1)] [string]$csv ) Begin { Write-Verbose -Message "Starting $($MyInvocation.InvocationName) with $($PsCmdlet.ParameterSetName) parameterset..." Write-Verbose -Message "Parameters are $($PSBoundParameters | Select-Object -Property *)" #include $DistrictAssetConfig . $env:LOCALAPPDATA\powershell\SPSAeriesAssetSync\$config\DistrictAssetConfig.ps1 Set-SPSAeriesConfiguration -Name $DistrictAssetConfig.SPSAeriesConfig $SchoolConfigs = $DistrictAssetConfig.SchoolConfigs if (!(Test-Path $csv)) { return } } Process { $csvData = Import-Csv $csv Write-Verbose "csvData Count: $($csvData.Count)" $itemsHT = @{} $aeriesItems = Get-SPSAeriesDistrictAssetItem | Where-Object {(!([string]::IsNullOrEmpty($_.SerialNumber)))} Write-Verbose "aeriesItems: $($aeriesItems.Count)" foreach ($item in $aeriesItems) { #write-verbose $item.SerialNumber $itemsHT[$item.SerialNumber] = $item } Write-Verbose "Total item count: $($itemsHT.Count)" $itemKeys = $itemsHT.keys foreach ($user in $csvData) { Write-Verbose "Finding Matching serial number for $($user.SerialNumber)" foreach ($key in $itemKeys) { #Write-Verbose "Comparing $($user.SerialNumber) against $key" if ($key -like $user.SerialNumber) { Write-Verbose "Match! $($user.SerialNumber) in $key" Write-Verbose "Assigning $key to $($user.UserID)" $AssignmentSplat = @{ AssetTitleNumber = $itemsHT[$key].AssetTitleNumber AssetItemNumber = $itemsHT[$key].AssetItemNumber UserID = $user.userID UserType = $user.userType } Write-Verbose $AssignmentSplat New-SPSAeriesDistrictAssetAssociation @AssignmentSplat } } } } End { Write-Verbose -Message "Ending $($MyInvocation.InvocationName)..." } } |