<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.jordan-lenuff.com/index.php?action=history&amp;feed=atom&amp;title=Technique%2FScripts%2FPowerCLI%2FExport_de_VM</id>
	<title>Technique/Scripts/PowerCLI/Export de VM - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.jordan-lenuff.com/index.php?action=history&amp;feed=atom&amp;title=Technique%2FScripts%2FPowerCLI%2FExport_de_VM"/>
	<link rel="alternate" type="text/html" href="https://wiki.jordan-lenuff.com/index.php?title=Technique/Scripts/PowerCLI/Export_de_VM&amp;action=history"/>
	<updated>2026-05-02T12:24:41Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://wiki.jordan-lenuff.com/index.php?title=Technique/Scripts/PowerCLI/Export_de_VM&amp;diff=1322&amp;oldid=prev</id>
		<title>Jordan : Page créée avec « ==Présentation== Cette page a pour objet de décrire le script &lt;code&gt;vmware_export_VM.ps1&lt;/code&gt;.  ==Script== &lt;syntaxhighlight lang=&quot;PowerShell&quot;&gt; #!/usr/bin/pwsh  &lt;# .SYN… »</title>
		<link rel="alternate" type="text/html" href="https://wiki.jordan-lenuff.com/index.php?title=Technique/Scripts/PowerCLI/Export_de_VM&amp;diff=1322&amp;oldid=prev"/>
		<updated>2021-12-01T17:41:28Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « ==Présentation== Cette page a pour objet de décrire le script &amp;lt;code&amp;gt;vmware_export_VM.ps1&amp;lt;/code&amp;gt;.  ==Script== &amp;lt;syntaxhighlight lang=&amp;quot;PowerShell&amp;quot;&amp;gt; #!/usr/bin/pwsh  &amp;lt;# .SYN… »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Présentation==&lt;br /&gt;
Cette page a pour objet de décrire le script &amp;lt;code&amp;gt;vmware_export_VM.ps1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PowerShell&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/pwsh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;#&lt;br /&gt;
.SYNOPSIS&lt;br /&gt;
    Script pour exporter une VM depuis le vCenter&lt;br /&gt;
.DESCRIPTION&lt;br /&gt;
    Au préalable, enregistrer les credentials en lançant le script create_credentials.ps1&lt;br /&gt;
.PARAMETER VmName&lt;br /&gt;
    Le nom de la VM à exporter. (obligatoire)&lt;br /&gt;
.PARAMETER VmExportedName&lt;br /&gt;
    Le nom de la VM une fois exportée. (facultatif)&lt;br /&gt;
	Valeur par défaut : $VmName&lt;br /&gt;
.PARAMETER ExportDir&lt;br /&gt;
    Le dossier local dans lequel la VM sera exportée. (facultatif)&lt;br /&gt;
	Valeur par défaut : /data/export_vms&lt;br /&gt;
.PARAMETER DeleteLocal&lt;br /&gt;
    Confirmation de la suppression de la VM locale lors de l'export. (faculatif)&lt;br /&gt;
	Valeur possible : No ou Yes&lt;br /&gt;
	Valeur par défaut : No&lt;br /&gt;
	Si Yes, la VM locale, si elle existe, est supprimée afin de pouvoir réaliser l'export.&lt;br /&gt;
	Si No, et que la VM locale n'existe pas, l'export se réalise.&lt;br /&gt;
	Si No, et que la VM locale existe, le script se terminera immédiatement sans réaliser l'export.&lt;br /&gt;
.EXAMPLE&lt;br /&gt;
	./vmware_export_VM.ps1 vm_test vm_template -DeleteLocal Yes&lt;br /&gt;
	./vmware_export_VM.ps1 vm_test vm_template -ExportDir /data/export_vms&lt;br /&gt;
.NOTES&lt;br /&gt;
	Codes erreur :&lt;br /&gt;
	0	Tout s'est bien passé&lt;br /&gt;
	1	La VM à exporter n'existe pas&lt;br /&gt;
	2	La VM à exporter existe plus d'une fois&lt;br /&gt;
	&lt;br /&gt;
    Author: LE NUFF Jordan&lt;br /&gt;
    Date:   Jan 11, 2021&lt;br /&gt;
#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
## Définition des paramètres d'entrée&lt;br /&gt;
Param&lt;br /&gt;
(&lt;br /&gt;
	[Parameter(Mandatory=$true, Position=0, HelpMessage=&amp;quot;Nom de la VM à exporter&amp;quot;)]&lt;br /&gt;
	[string]$VmName,&lt;br /&gt;
	[Parameter(Mandatory=$false, Position=1, HelpMessage=&amp;quot;Nom de la VM une fois exportée&amp;quot;)]&lt;br /&gt;
	[string]$VmExportedName=$VmName,&lt;br /&gt;
	[Parameter(Mandatory=$false, HelpMessage=&amp;quot;Dossier d'export de la VM&amp;quot;)]&lt;br /&gt;
	[string]$ExportDir=&amp;quot;/data/export_vms&amp;quot;,&lt;br /&gt;
	[Parameter(Mandatory=$false, HelpMessage=&amp;quot;Confirmation de la suppression de la VM locale : No ou Yes&amp;quot;)]&lt;br /&gt;
	[ValidateSet('No','Yes')]&lt;br /&gt;
	[string]$DeleteLocal='No'&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
## Initialisation variables&lt;br /&gt;
# Dossier des identifiants&lt;br /&gt;
$CredsFileLocation=&amp;quot;/data/scripts/.credentials&amp;quot;&lt;br /&gt;
# Adresse IP du vCenter&lt;br /&gt;
$UrlVcenter=&amp;quot;myvcenter.mydomain.com&amp;quot;&lt;br /&gt;
# Identifiant VMware à utiliser&lt;br /&gt;
$VmwareUser=&amp;quot;myuser@mydomain.com&amp;quot;&lt;br /&gt;
# Construction du fichier d'identifiants à utiliser&lt;br /&gt;
$VcFileCreds=$($CredsFileLocation + &amp;quot;/&amp;quot; + $UrlVcenter + &amp;quot;_&amp;quot; + $VmwareUser + &amp;quot;_ps.xml&amp;quot;)&lt;br /&gt;
# Importation des credentials&lt;br /&gt;
$VcCreds=Import-Clixml -Path $VcFileCreds&lt;br /&gt;
&lt;br /&gt;
## Connection au VCenter&lt;br /&gt;
Connect-VIServer -Server $UrlVcenter -Credential $VcCreds | Out-Null&lt;br /&gt;
&lt;br /&gt;
## Vérifications&lt;br /&gt;
# La VM source existe-t-elle ? Si non, fin du script&lt;br /&gt;
$vm=Get-VM -name $VmName -ErrorAction SilentlyContinue&lt;br /&gt;
If (!$vm){&lt;br /&gt;
	Write-Host &amp;quot;La VM $VmName n'existe pas. Fin du script.&amp;quot;&lt;br /&gt;
	exit 1&lt;br /&gt;
} ElseIf ($vm.Count -gt 1) {&lt;br /&gt;
	Write-Host &amp;quot;La VM $VmName fournie existe plus d'une fois. VM à exporter ambigüe. Fin du script.&amp;quot;&lt;br /&gt;
	exit 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Supprimer les snapshots de la VM&lt;br /&gt;
Get-Snapshot $VmName | Remove-Snapshot -confirm:$false&lt;br /&gt;
&lt;br /&gt;
# Extinction de la VM si pas éteinte&lt;br /&gt;
If ( $vm.PowerState -ne 'PoweredOff' ) &lt;br /&gt;
{&lt;br /&gt;
	$vm = Get-VM $VmName&lt;br /&gt;
	$statusGuest = $vm.ExtensionData.Guest.GuestState&lt;br /&gt;
	$boottime = $vm.ExtensionData.Runtime.BootTime&lt;br /&gt;
	If ($statusGuest -ne 'running' ) {&lt;br /&gt;
		do {&lt;br /&gt;
			Start-Sleep -s 2&lt;br /&gt;
			$vm = Get-VM $VmName&lt;br /&gt;
			$statusGuest = $vm.ExtensionData.Guest.GuestState&lt;br /&gt;
			$boottime = $vm.ExtensionData.Runtime.BootTime&lt;br /&gt;
		} until ($statusGuest -eq &amp;quot;running&amp;quot;)&lt;br /&gt;
	}&lt;br /&gt;
	Shutdown-VMGuest -VM $vm -confirm:$false | Out-Null&lt;br /&gt;
	do {&lt;br /&gt;
		Start-Sleep -s 2&lt;br /&gt;
		$vm = Get-VM $VmName&lt;br /&gt;
		$status = $vm.PowerState&lt;br /&gt;
		$statusGuest = $vm.ExtensionData.Guest.GuestState&lt;br /&gt;
		$boottime = $vm.ExtensionData.Runtime.BootTime&lt;br /&gt;
	} until ($status -eq &amp;quot;PoweredOff&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Suppression d'un éventuel ISO présent dans le lecteur CD&lt;br /&gt;
$cd = Get-VM -Name $VmName | Get-CDDrive&lt;br /&gt;
Set-CDDrive -CD $cd -NoMedia -confirm:$false&lt;br /&gt;
&lt;br /&gt;
# Export de la VM au format OVF (par défaut) ou Ova&lt;br /&gt;
If ($DeleteLocal -eq 'No'){&lt;br /&gt;
	$task = Export-VApp -VM $VmName -Name $VmExportedName -Destination $ExportDir -RunAsync&lt;br /&gt;
} ElseIf ($DeleteLocal -eq 'Yes') {&lt;br /&gt;
	$task = Export-VApp -VM $VmName -Name $VmExportedName -Destination $ExportDir -Force -RunAsync&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Wait-Task -Task $task&lt;br /&gt;
&lt;br /&gt;
# Démarrage de la VM&lt;br /&gt;
$task = Start-VM -VM $VmName -confirm:$false -RunAsync&lt;br /&gt;
Wait-Task -Task $task&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Confirm:$false&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jordan</name></author>
		
	</entry>
</feed>