Adding scripts

This commit is contained in:
ackitsme committed 2026-07-24 17:35:40 -07:00
1 parent e78eed48b6
commit fc7cfeb008
10 files changed
+2321

No files matched your search

+105
View File
@@ -0,0 +1,105 @@
param (
[string]$vcenter = "",
# [switch]$allvms,
[switch]$savecred,
[switch]$Help = $false
)
# Variables
$fileVersion = "1.2.0"
$fileDate = "2024-12-13"
# Display Script Banner
Write-Host "--------------------------------------------------" -ForegroundColor White
Write-Host "vSphere VM Network Assignment Export" -ForegroundColor Green
Write-Host "Version $($FileVersion) ($($FileDate))" -ForegroundColor Green
Write-Host "Written by Charlie Silverman" -ForegroundColor Green
Write-Host "--------------------------------------------------" -ForegroundColor White
if ($Help) {
Write-Host "Command Syntax:" -ForegroundColor Green
Write-Host 'GetVMNetworks.ps1 -vcenter="VCURI" [-help] [-savecred]' -ForegroundColor Green
Write-Host ""
Write-Host "Command line options:" -ForegroundColor Green
Write-Host "---------------------" -ForegroundColor Green
Write-Host "-vcenter - Specify the URI for the vCenter server" -ForegroundColor Green
Write-Host "-savecred - Save Credentials. If credentials were previously saved and this option is not selected," -ForegroundColor Green
Write-Host " they will be used." -ForegroundColor Green
Write-Host "-help - Show this help information." -ForegroundColor Green
exit
}
if ($vcenter -eq "") {
$vcenter = Read-Host "Enter name of vCenter Server"
}
try {
if (Test-Path -Path "$env:USERPROFILE\GetVMNetworks-$vcenter.cred" -PathType Leaf) {
Write-Host "Using stored credentials for $vcenter."
$cred = Import-CliXML -path "$env:USERPROFILE\GetVMNetworks-$vcenter.cred"
} else {
$cred = Get-Credential -Message "Enter credentials for vCenter $vcenter"
}
$vcenterConnection = connect-viserver $vcenter -credential $cred -ErrorAction Stop
} catch {
Write-Host "ERROR: Invalid credentials or incorrect vCenter FQDN"
Write-Host $_
exit
}
if ($savecred) {
Write-Host "Storing credentials for $vcenter."
$cred | Export-CliXML -Path "$env:USERPROFILE\GetVMNetworks-$vcenter.cred"
}
# Output filename
$DesktopPath = [Environment]::GetFolderPath("Desktop")
$now = (Get-Date).ToString("yyyyMMdd_hhmm")
$csvFileName = "$DesktopPath\VMNetworkList-$now.csv"
# Find the maximum number of adapters in a VM to create the CSV header properly
$allvms = get-vm
$maxnics = 0
foreach ($vm in $allvms) {
$adaptercount = ($vm | get-networkadapter | measure).Count
if ($adaptercount -gt $maxnics) {
$maxnics = $adaptercount
}
}
# Write the CSV header
$header = """Cluster"",""VM Name"""
for ($x = 1; $x -le $maxnics; ++$x) {
#write-host -NoNewLine ",Network Adapter $x"
$header = "$header,""Network Adapter $x"""
}
# write-host
$header | Out-File -FilePath $csvFileName -Encoding UTF8
# Get list of clusters
$clusters = get-cluster
# Iterate through cluster list
foreach ($cluster in $clusters) {
# Get list of VMs in the cluster
$vms = $cluster | get-vm | sort-object -Property Name
$clusterName = $cluster.Name
# Iterate through the VM list
foreach($vm in $vms) {
$vmName = $vm.Name
$entry = """$cluster"",""$vmName"""
# Get all network adapters for the VM
$netAdapters = $vm | get-networkadapter
# Iterate through adapter list
foreach ($adapter in $netAdapters) {
# Append port group name for each adapter
$adapterName = $adapter.Name
$adapterPG = $adapter.NetworkName
$entry = "$entry,""$adapterPG"""
}
# Write host entry
#write-Host $entry
$entry | Out-File -FilePath $csvFileName -Append -Encoding UTF8
}
Write-Host "`nData for cluster $clusterName has been saved to the file $csvFileName."
}