> For the complete documentation index, see [llms.txt](https://docs.plenit.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.plenit.com/fr/support/tutorials/windows/how-to-set-up-an-ftp-server-with-powershell.md).

# Comment installer et configurer un serveur FTP sur Windows via PowerShell

Si vous voulez savoir **comment installer et configurer un serveur FTP sous Windows via PowerShell** accompagnez-nous tout au long de ce bref tutoriel où nous le ferons en quelques étapes simples.

Ce tutoriel complète celui que nous avons déjà réalisé via l’environnement graphique et que nous avons intitulé [Comment installer et configurer un serveur FTP sous Windows (IIS)](https://jotelulu.com/soporte/tutoriales/como-instalar-y-configurar-un-servidor-ftp-en-windows-iis/){target="\_blank" rel="noopener"}.

**REMARQUE :** *Une dièse (#) a été ajoutée devant toutes les lignes pour des raisons de sécurité, car si l’une de ces lignes était copiée par erreur, elle ne s’exécuterait pas (la dièse sert à commenter du code, ce qui le rend non exécutable). Pour pouvoir l’exécuter, il faut retirer le caractère "#" de toutes les lignes.*

### **Comment installer et configurer un serveur FTP sous Windows via PowerShell ?**

### **Pré-requis ou préconfiguration.**

Pour terminer ce tutoriel de manière satisfaisante et pouvoir **installer et configurer un serveur FTP sous Windows via PowerShell** il faudra :

* D’une part, être inscrit sur la plateforme Plenit avec une Organisation et y être enregistré après avoir effectué [Connexion](https://admin.jotelulu.com/){target="\_blank" rel="noopener"}.
* D'autre part, [avoir souscrit un Abonnement de Serveurs](https://jotelulu.com/soporte/tutoriales/como-desplegar-servidor){target="\_blank" rel="noopener"}
* Avoir un serveur Windows opérationnel dans l’Abonnement.

&#x20;

#### **Étape 1. Installer et configurer un serveur FTP sous Windows via PowerShell**

La première chose que nous ferons sera **installer la fonctionnalité de serveur FTP**, pour ce faire, il faudra lancer la **console PowerShell**, **ou celle de PowerShell ISE**. Comme je l’ai dit récemment, le plus souhaitable serait d’utiliser ISE (si l’on peut dire, l’IDE de Microsoft), car cela nous permet de faire des tests, de voir où cela échoue, etc.

Une fois dans la console (ou ISE) de PowerShell, il faudra **exécuter les commandes "Install-WindowsFeature"** (1).

*# Install-WindowsFeature Web-FTP-Server -IncludeAllSubFeature*

*# Install-WindowsFeature Web-Server -IncludeAllSubFeature -IncludeManagementTools*

*# Import-Module WebAdministration*

Où :

* La commande **"Install-WindowsFeature" installe la fonctionnalité** de Windows que nous lui passons en paramètre.
* L’option **"-IncludeAllSubFeature" installe toutes les options** dont dispose la fonctionnalité de Windows.
* L’option **"-IncludeManagementTools" installe les outils** **administratifs** de cette fonctionnalité.

![Paso 1. Hacemos el despliegue del servicio de FTP mediante
PowerShell](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Hacemos-el-despliegue-del-servicio-de-FTP-mediante-PowerShell.jpg)\\

Étape 1. Nous déployons le service FTP via PowerShell

Une fois cela fait, **nous poursuivons l’installation** en important le module d’administration du FTP via **la commande** **"Import-Module"** (2).

![Paso 1. Importamos el módulo de administración del FTP mediante
PowerShell](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Importamos-el-modulo-de-administracion-del-FTP-mediante-PowerShell.jpg)\\

Étape 1. Nous importons le module d’administration du FTP via PowerShell

Ensuite, on **configure le nouveau site FTP** pour fournir le service.

Celui-ci aura une série de caractéristiques qu’il faudra configurer, et l’on pourra lancer directement une commande comme la suivante :

\*# New-WebFtpSite -Name \ -Port\
-PhysicalPath \*

Où :

* La commande **«New-WebFtpSite» déploie le nouveau site** FTP.
* **"-Name "** décrit **le nom** que nous donnerons au site FTP.
* **"-Port "** est un nombre qui indique **sur quel port écoute** le FTP.
* **"-PhysicalPath "** est le **chemin du serveur** où se trouvent les données du FTP.

De cette manière, cela pourrait ressembler à ceci :

*# New-WebFtpSite -Name 'FTP Site Nacho' -Port '21' -PhysicalPath 'C:\datos\ftproot'*

Nous pourrions le remplacer directement là et la configuration serait faite, mais c’est un peu bricolé, c’est pourquoi on utilise généralement des variables afin d’améliorer l’Utilisation lors d’occasions futures.

Pour tout avoir mieux organisé, **nous créerons quelques variables**, comme nous l’avons dit, qui seront les suivantes :

* **"-Name "** décrit le **nom que nous donnerons au site** FTP, la variable étant "$Name".
* **"-Port "** est un nombre qui indique sur quel **port écoute** le FTP, la variable étant "$Port".
* **"-PhysicalPath "** est le chemin du serveur **où se trouvent les données** du FTP, la variable étant "$Root".

En gardant cela à l’esprit, tout est configuré et l’on termine **en exécutant les commandes suivantes** (3):

*# $Name = 'FTP Site Nacho'*

*# $Root = 'C:\datos\ftproot'*

*# $Port = 21*

*# New-WebFtpSite -Name $Name -Port $Port -PhysicalPath $Root*

![Paso 1. Configuramos el site de FTP para el
servicio](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Configuramos-el-site-de-FTP-para-el-servicio.jpg)\\

Étape 1. Nous configurons le site FTP pour le service

À ce stade, le serveur FTP lui-même est déjà installé, et il restera **à configurer, à ajouter des Utilisateurs, des référentiels, à le sécuriser**, etc.

À ce stade, pour moi, la première chose serait de créer un Utilisateur (et son groupe associé) afin de pouvoir vérifier que nous pouvons établir la connexion et non simplement. Ainsi, si ensuite nous le sécurisons en fermant les ports ou en configurant des certificats, nous serons sûrs que cette partie fonctionnait.

Dans ce cas, nous créons d’abord un groupe pour les Utilisateurs capables de se connecter au FTP, car il vaut mieux créer un groupe auquel on pourra les ajouter ensuite.

Pour **créer le groupe FTP** (4) nous utilisons :

*# $FTPUserGroupName = «Usuarios de FTP»*

*# $ADSI = \[ADSI]»WinNT://$env:ComputerName»*

*# $FTPUserGroup = $ADSI.Create(«Group», «$FTPUserGroupName»)*

*# $FTPUserGroup.SetInfo()*

*# $FTPUserGroup.Description = «Les membres de ce groupe peuvent se connecter au FTP»*

*# $FTPUserGroup.SetInfo()*

![Paso 1. Creamos el grupo de FTP para el
servicio](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Creamos-el-grupo-de-FTP-para-el-servicio.jpg)\\

Étape 1. Nous créons le groupe FTP pour le service

Dans ce cas, nous ferons Utilisation des commandes ADSI pour le déploiement du groupe, en utilisant comme toujours certaines variables pour simplifier la configuration.

L’étape suivante serait **de créer l’Utilisateur avec lequel les connexions au FTP seront effectuées** (5).

*# $FTPUserName = «ftpnacho»*

*# $FTPPassword = 'Contrasenya123!'*

*# $CreateUserFTPUser = $ADSI.Create(«User», «$FTPUserName»)*

*# $CreateUserFTPUser.SetInfo()*

*# $CreateUserFTPUser.SetPassword(«$FTPPassword»)*

*# $CreateUserFTPUser.SetInfo()*

![Paso 1. Creamos un usuario para las conexiones de
FTP](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Creamos-un-usuario-para-las-conexiones-de-FTP.jpg)\\

Étape 1. Nous créons un Utilisateur pour les connexions FTP

Une fois cela fait, il faut **ajouter dans le groupe FTP du système** (6), en exécutant pour cela :

*# $UserAccount = New-Object System.Security.Principal.NTAccount(«$FTPUserName»)*

*# $SID = $UserAccount.Translate(\[System.Security.Principal.SecurityIdentifier])*

*# $Group = \[ADSI]»WinNT://$env:ComputerName/$FTPUserGroupName,Group»*

*# $User = \[ADSI]»WinNT://$SID»*

*# $Group.Add($User.Path)*

![Paso 1. Añadimos el usuario de FTP al grupo de FTP del
sistema](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Anadimos-el-usuario-de-FTP-al-grupo-de-FTP-del-sistema.jpg)\\

Étape 1. Nous ajoutons l’Utilisateur FTP au groupe FTP du système

À ce stade, il faut **activer l’authentification de base du site FTP** puis **autoriser le groupe Windows** (7) qui contient l’Utilisateur FTP afin qu’il puisse accéder au site FTP et donc faire Utilisation du service.

Pour cela, il faut exécuter les commandes suivantes :

*\[# $FTPSitePath]\[ = ]\[«IIS:\Sites\\]\[$FTPSiteName]\[«]*

*\[# $BasicAuth]\[ = ]\['ftpServer.security.authentication.basicAuthentication.enabled']*

*\[\[# ]Set-ItemProperty]\[ -Path ]\[$FTPSitePath]\[ -Name ]\[$BasicAuth]\[ -Value ]\[$True]*

*\[# $Param]\[ = @]\[{]*

*\[\[# ]Filter]\[ = ]\[«/system.ftpServer/security/authorization»]*

*\[ \[# ]Value = @]\[{]*

*\[ \[# ]accessType = ]\[«Allow»]*

*\[ \[# ]roles = ]\[«]\[$FTPUserGroupName]\[«]*

*\[ \[# ]permissions = ]\[1]*

*\[\[# ]}]*

*\[ \[# ]PSPath = 'IIS:\\']*

*\[ \[# ]Location = ]\[$FTPSiteName]*

*\[\[# ]}]*

*\[\[# ]Add-WebConfiguration]\[ @]\[param]*

![Paso 1. Configuramos la autenticación básica para nuestro sitio de
FTP](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Configuramos-la-autenticacion-basica-para-nuestro-sitio-de-FTP.jpg)\\

Étape 1. Nous configurons l’authentification de base pour notre site FTP

L’étape suivante est **modifier la politique SSL et les Autorisations de fichiers dans le Dossier** **racine du serveur FTP** (8), c’est-à-dire là où sont stockés tous les fichiers téléversés par les Utilisateurs du service.

Pour cela, nous exécutons les commandes suivantes :

*#* *$SSLPolicy = @(*

*#  'ftpServer.security.ssl.controlChannelPolicy',*

*#   'ftpServer.security.ssl.dataChannelPolicy'*

*# )*

*# Set-ItemProperty -Path $FTPSitePath -Name $SSLPolicy\[0] -Value $false*

*# Set-ItemProperty -Path $FTPSitePath -Name $SSLPolicy\[1] -Value $false*

![Paso 1. Cambiamos la política de SSL y los permisos de ficheros en la
carpeta raíz del servidor
FTP](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Cambiamos-la-politica-de-SSL-y-los-permisos-de-ficheros-en-la-carpeta-raiz-del-servidor-FTP.jpg)\\

Étape 1. Nous modifions la politique SSL et les Autorisations de fichiers dans le Dossier racine du serveur FTP

L’étape suivante consiste à lancer les commandes suivantes pour configurer les autorisations NTFS dans le Dossier racine afin de permettre l’accès et le travail sur ce Dossier aux Utilisateurs appartenant au groupe FTP.

*# $UserAccount = New-Object System.Security.Principal.NTAccount(«$FTPUserGroupName»)*

*# $AccessRule = \[System.Security.AccessControl.FileSystemAccessRule]::new($UserAccount,*

*#     'ReadAndExecute',*

*#     'ContainerInherit,ObjectInherit',*

*#     'None',*

*#     'Allow'*

*# )*

*# $ACL = Get-Acl -Path $FTPRootDir*

*# $ACL.SetAccessRule($AccessRule)*

*# $ACL | Set-Acl -Path $FTPRootDir*

Enfin, pour que tous les changements prennent effet **il faut redémarrer l’instance du FTP** (9), pour cela il faut exécuter :

\# Restart-WebItem «IIS:\Sites\\$Name» -Verbose

![Paso 1. Reiniciamos el servicio de FTP desde consola de
PowerShell](https://jotelulu.com/wp-content/uploads/2023/09/Paso-1.-Reiniciamos-el-servicio-de-FTP-desde-consola-de-PowerShell.jpg)\\

Étape 1. Nous redémarrons le service FTP depuis la console PowerShell

Avec cela, le processus de configuration du FTP est terminé.

&#x20;

### **Conclusions et prochaines étapes :**

Tout au long de ce tutoriel, nous avons vu comment réaliser l’\*\*installation et la configuration d’un serveur FTP sous Windows via PowerShell\*\* sur l’un des Serveurs Windows hébergés dans Plenit.

Si ce que vous avez lu jusqu’à présent vous a intéressé, vous pouvez approfondir certains services associés ; il est possible que les tutoriels suivants vous intéressent :

* [Comment déployer un nouveau serveur chez Plenit](https://jotelulu.com/soporte/tutoriales/como-desplegar-servidor){target="\_blank" rel="noopener"}.
* [Comment créer un tunnel VPN site-to-site dans Plenit](https://jotelulu.com/soporte/tutoriales/crear-tunel-vpn-site-to-site){target="\_blank" rel="noopener"}.
* [Comment créer des modèles sur un serveur pour les réutiliser dans Remote Desktop](https://jotelulu.com/soporte/tutoriales/crear-plantillas-servidor-para-reutilizarlas-escritorio-remoto){target="\_blank" rel="noopener"}.
* [Comment créer un VPC et associer un TIER dans Plenit](https://jotelulu.com/soporte/tutoriales/como-crear-vpc-asociar-tier){target="\_blank" rel="noopener"}.

Nous espérons qu’avec ce petit guide, vous n’aurez aucun problème pour configurer votre serveur FTP de manière rapide et fonctionnelle, mais si vous en aviez, n’hésitez pas à nous contacter afin que nous puissions vous donner un coup de main.

**Merci pour votre confiance.**


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.plenit.com/fr/support/tutorials/windows/how-to-set-up-an-ftp-server-with-powershell.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
