-
Notifications
You must be signed in to change notification settings - Fork 50
/
Sysprep Automation Script.ps1
113 lines (96 loc) · 8.09 KB
/
Sysprep Automation Script.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<#==================================================
Generated On: 6/27/2014 2:49 PM
Generated By: Brian Graf
VMware Technical Marketing Engineer - Automation
Organization: VMware
vCenter Sysprep File Transfer
==================================================
--------------------------------------------------
==================USAGE===========================
This script has been created to aid users who
upload multiple sysprep files to vCenter Server.
The upload button in vCenter only allows a single
file per upload. This script will allow the user
to upload as many files as they please.
--------------------------------------------------
===============REQUIREMENTS=======================
Fill in the environment variables below. There
Is a $DefaultVIServer and a $target_vcenter.
This is because some customers may be running
their target vCenter server within a different
vCenter environment.
On your local machine, you will need a directory
that includes the following folders:
* 2k
* svr2003-64
* svr2003
* xp
* 1.1
* xp-64
Place all sysprep files within their respective
folders.
Run the script. The script will determine if
the target_vCenter is a Windows VM or VCSA
and place the files accordingly.
***NOTE*** This script will give an error if
it tries to upload a filename that already exists
in the vCenter directory. If you wish for the
script to overwrite any file with the same name
add '-force' to the end of the copy-vmguestfile
command.
--------------------------------------------------
#>
# ----------------------------------------
# USER CONFIGURATION - EDIT AS NEEDED
# ----------------------------------------
$DefaultVIServer = "vcsa.lab.local"
$vCUser = "root"
$vCPass = "VMware1!"
$target_vcenter = "VCSA"
$target_vcenter_user = "root"
$target_vcenter_password = "VMware1!"
$Location = "C:\temp"
$vC_Partition = "C:"
# ----------------------------------------
# END USER CONFIGURATION
# ----------------------------------------
# Sysprep Folders on vCenter
$folders = @("2k","svr2003-64","svr2003","xp","1.1","xp-64")
# Add PowerCLI Snapin
Add-PSSnapin vmware.vimautomation.core
# Connect to vCenter
connect-viserver $DefaultVIServer -user $vCUser -password $vCPass
# Get view of the vCenter data
$myVC= get-vm $target_vcenter | get-view
# $OS captures the Operating System Name
$OS = $myVC.config.GuestFullName
# Switch of Operating System
switch -wildcard ($OS)
{
# As per the compatibility guide, all OS's from the compatibility guide have been added
"*SUSE*" {Write-Host "This is a SUSE Machine" -ForegroundColor Green; $OS = "VCSA"}
"* XP *" {Write-Host "This is a Windows XP Machine" -ForegroundColor Green}
"* 2003 *" {Write-Host "This is a Windows Server 2003 Machine" -ForegroundColor Green}
"* 2008 *" {Write-Host "This is a Windows Server 2008 Machine" -ForegroundColor Green}
"* 2012 *" {Write-Host "This is a Windows Server 2012 Machine" -ForegroundColor Green}
Default {Write-Host "This is the default" -ForegroundColor Green}
}
Write-Host ""
# If Location is not set, ask user to input location
if ($Location -eq ""){
$Location = Read-Host "Where is the sysprep file located? (ex. c:\temp) "
}
# Cycle through Sysprep Folders on local machine
foreach($folder in $folders){
if ($OS -eq "VCSA"){$Destination = "/etc/vmware-vpx/sysprep/$folder"} else {$Destination = "$vC_Partition\ProgramData\VMware\VMware VirtualCenter\Sysprep\$folder"}
# Get files from each folder
Get-ChildItem "$($Location)\$($folder)" -ErrorAction SilentlyContinue | ForEach-Object {
$source = "$($Location)\$($folder)\$_"
Write-Host "Transferring File `"$_`" " -ForegroundColor Green #Source = $source" -ForegroundColor Green
Write-Host "Destination = $Destination" -ForegroundColor Green
# Copy Files to vCenter Sysprep folders
Copy-vmguestfile -source "$source" -Destination "$Destination" -VM "$target_vcenter" -LocalToGuest -GuestUser "$target_vcenter_user" -GuestPassword "$target_vcenter_password"
}
}
Disconnect-viServer -confirm:$false