diff --git a/Jamf Pro/Admin Tools/jamf_MoveSites.ps1 b/Jamf Pro/Admin Tools/jamf_MoveSites.ps1
index 30d94e3..c130ddb 100644
--- a/Jamf Pro/Admin Tools/jamf_MoveSites.ps1
+++ b/Jamf Pro/Admin Tools/jamf_MoveSites.ps1
@@ -2,7 +2,7 @@
Script Name: jamf_MoveSites.ps1
By: Zack Thompson / Created: 4/18/2018
-Version: 1.0 / Updated: 4/18/2018 / By: ZT
+Version: 1.1 / Updated: 5/14/2018 / By: ZT
Description: This script will move a device record between Sites given information from a CSV.
@@ -15,17 +15,13 @@ Write-Host "jamf_MoveSites Process: START"
# ============================================================
# Setup Credentials
-$jamfAPIUser = ""
-# Define Password from within the script.
- $jamfAPIPassword = ConvertTo-SecureString -String 'SecurePassPhrase' -AsPlainText -Force
-# Create an encrypted password file.
- $exportPassPhrase = 'SecurePassPhrase' | ConvertTo-Securestring -AsPlainText -Force
- $exportPassPhrase | ConvertFrom-SecureString | Out-File $PSScriptRoot\Cred.txt
-# Read in encrypted password.
- $jamfAPIPassword = Get-Content $PSScriptRoot\jamf_MoveSites_Creds.txt | ConvertTo-SecureString
-
+$jamfAPIUser = $(Read-Host "JPS Account")
+$jamfAPIPassword = $(Read-Host -AsSecureString "JPS Password")
$APIcredentials = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $jamfAPIUser, $jamfAPIPassword
+# Prompt for the Site to move objects into.
+$NewSite = $(Read-Host "New Site")
+
# Setup API URLs
$jamfPS="https://jss.company.com:8443"
$getSites="${jamfPS}/JSSResource/sites"
@@ -34,14 +30,20 @@ $getComputer="${jamfPS}/JSSResource/computers/id"
$getMobileDevices="${jamfPS}/JSSResource/mobiledevices"
$getMobileDevice="${jamfPS}/JSSResource/mobiledevices/id"
-# Import the CSV File with the information we want to update.
-$csvComputers = Import-Csv "\path\to\file\MoveComputers.csv"
-$csvMobileDevices = Import-Csv "\path\to\file\MoveMobileDevices.csv"
-
# ============================================================
# Functions
# ============================================================
+Function Prompt {
+ $Title = "Choose Device Type";
+ $Message = "Chose which device types you want to move:"
+ $Option1 = New-Object System.Management.Automation.Host.ChoiceDescription "&Both";
+ $Option2 = New-Object System.Management.Automation.Host.ChoiceDescription "&Computers";
+ $Option3 = New-Object System.Management.Automation.Host.ChoiceDescription "Mobile Devices";
+ $Options = [System.Management.Automation.Host.ChoiceDescription[]]($Option1,$Option2,$Option3);
+ $script:Answer = $Host.UI.PromptForChoice($Title,$Message,$Options,0)
+}
+
function updateRecord($deviceType, $urlALL, $urlID, $csvValues, $columnName) {
Write-Host "Pulling data for each individual ${deviceType} record..."
@@ -56,10 +58,10 @@ function updateRecord($deviceType, $urlALL, $urlID, $csvValues, $columnName) {
$currentSite = $objectOf_deviceGeneral.${deviceType}.general.site.name
# Compare the values to what we do want them to be
- If ( ( "${currentSite}" -ne "site1" ) -and ( "${currentSite}" -ne "site2" ) ) {
+ If ( ( "${currentSite}" -ne "${NewSite}" ) -and ( "${currentSite}" -ne "${NewSite}.dev" ) ) {
Write-host "${deviceType} ID: ${ID} is a member of ${currentSite}"
- [xml]$upload_deviceEA = "<${deviceType}>newSite${deviceType}>"
+ [xml]$upload_deviceEA = "<${deviceType}>${NewSite}${deviceType}>"
Try {
$Response = Invoke-RestMethod -Uri "${urlID}/${ID}" -Method Put -Credential $APIcredentials -Body $upload_deviceEA -ErrorVariable RestError -ErrorAction SilentlyContinue
@@ -69,8 +71,8 @@ function updateRecord($deviceType, $urlALL, $urlID, $csvValues, $columnName) {
$statusDescription = $_.Exception.Response.StatusDescription
If ($statusCode -notcontains "200") {
- Write-host "Failed to assign site for ${deviceType} ID: ${ID}..."
- Write-Host "Response: ${statusCode}/${statusDescription}"
+ Write-host " -> Failed to assign site for ${deviceType} ID: ${ID}..."
+ Write-Host " -> Response: ${statusCode}/${statusDescription}"
}
}
}
@@ -101,8 +103,25 @@ Catch {
Write-Host "API Credentials Valid -- continuing..."
-# Call Update function for each device type
-updateRecord computer $getComputers $getComputer $csvComputers 'JSS Computer ID'
-updateRecord mobile_device $getMobileDevices $getMobileDevice $csvMobileDevices "JSS Mobile Device ID"
+# Prompt for the CSV Files with the devices that need to be moved.
+Prompt
+
+# Request list of devices and call Update function for each device type
+switch ($Answer) {
+ 0 {
+ $csvComputers = Import-Csv -Path ($(Read-Host "List of Computers") -replace '"')
+ $csvMobileDevices = Import-Csv -Path ($(Read-Host "List of Mobile Devices") -replace '"')
+ updateRecord computer $getComputers $getComputer $csvComputers 'JSS Computer ID'
+ updateRecord mobile_device $getMobileDevices $getMobileDevice $csvMobileDevices "JSS Mobile Device ID"
+ }
+ 1 {
+ $csvComputers = Import-Csv -Path ($(Read-Host "List of Computers") -replace '"')
+ updateRecord computer $getComputers $getComputer $csvComputers 'JSS Computer ID'
+ }
+ 2 {
+ $csvMobileDevices = Import-Csv -Path ($(Read-Host "List of Mobile Devices") -replace '"')
+ updateRecord mobile_device $getMobileDevices $getMobileDevice $csvMobileDevices "JSS Mobile Device ID"
+ }
+}
Write-Host "jamf_MoveSites Process: COMPLETE"
\ No newline at end of file