Partager via


Join-String

Combine des objets du pipeline en une seule chaîne.

Syntaxe

Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]
Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-SingleQuote]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]
Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-DoubleQuote]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]
Join-String
    [[-Property] <PSPropertyExpression>]
    [[-Separator] <String>]
    [-OutputPrefix <String>]
    [-OutputSuffix <String>]
    [-FormatString <String>]
    [-UseCulture]
    [-InputObject <PSObject[]>]
    [<CommonParameters>]

Description

L’applet de commande Join-String joint ou combine du texte à partir d’objets de pipeline en une seule chaîne.

Si aucun paramètre n’est spécifié, les objets de pipeline sont convertis en chaîne et joints avec le séparateur par défaut $OFS.

Note

Lorsque vous définissez $OFS sa valeur est utilisée pour joindre des tableaux lorsqu’ils sont convertis en chaînes jusqu’à ce que la variable soit réinitialisée à $null. Étant donné que l’utilisation de $OFS peut avoir des effets inattendus ailleurs dans votre code, il est préférable d’utiliser le paramètre Séparateur à la place.

En spécifiant un nom de propriété, la valeur de la propriété est convertie en chaîne et jointe en chaîne.

Au lieu d’un nom de propriété, un bloc de script peut être utilisé. Le résultat du bloc de script est converti en chaîne avant qu’il ne soit joint pour former le résultat. Il peut combiner le texte de la propriété d’un objet ou le résultat de l’objet qui a été converti en chaîne.

Cette applet de commande a été introduite dans PowerShell 6.2.

Exemples

Exemple 1 : Joindre des noms d’annuaires

Cet exemple joint les noms de répertoires, encapsule la sortie entre guillemets doubles et sépare les noms de répertoires par une virgule et un espace (, ). La sortie est un objet de chaîne.

Get-ChildItem -Directory C:\ | Join-String -Property Name -DoubleQuote -Separator ', '

"PerfLogs", "Program Files", "Program Files (x86)", "Users", "Windows"

utilise le paramètre Directory pour obtenir tous les noms de répertoires du lecteur . Les objets sont envoyés vers le bas du pipeline pour Join-String. Le paramètre Property spécifie les noms de répertoires. Le paramètre DoubleQuote encapsule les noms de répertoires avec des guillemets doubles. Le paramètre séparateur spécifie d’utiliser une virgule et un espace () pour séparer les noms de répertoires.

Les objets Get-ChildItem sont System.IO.DirectoryInfo et Join-String convertit les objets en System.String.

Exemple 2 : Utiliser une sous-chaîne de propriété pour joindre des noms de répertoires

Cet exemple utilise une méthode de sous-chaîne pour obtenir les quatre premières lettres de noms de répertoires, encapsuler la sortie entre guillemets simples et sépare les noms de répertoires par un point-virgule (;).

Get-ChildItem -Directory C:\ | Join-String -Property {$_.Name.SubString(0,4)} -SingleQuote -Separator ';'

'Perf';'Prog';'Prog';'User';'Wind'

utilise le paramètre Directory pour obtenir tous les noms de répertoires du lecteur . Les objets sont envoyés vers le bas du pipeline pour Join-String.

Le bloc de script de paramètre property utilise la variable automatique () pour spécifier la sous-chaîne de propriété Name de chaque objet. La sous-chaîne obtient les quatre premières lettres de chaque nom de répertoire. La sous-chaîne spécifie les positions de début et de fin du caractère. Le paramètre SingleQuote encapsule les noms de répertoires avec des guillemets simples. Le paramètre Séparateur spécifie d’utiliser un point-virgule (;) pour séparer les noms de répertoires.

Pour plus d’informations sur les variables automatiques et les sous-chaînes, consultez about_Automatic_Variables et sous-chaîne.

Exemple 3 : Afficher la sortie de jointure sur une ligne distincte

Cet exemple joint les noms de service avec chaque service sur une ligne distincte et mis en retrait par un onglet.

Get-Service -Name se* | Join-String -Property Name -Separator "`r`n`t" -OutputPrefix "Services:`n`t"

Services:
    seclogon
    SecurityHealthService
    SEMgrSvc
    SENS
    Sense
    SensorDataService
    SensorService
    SensrSvc
    SessionEnv

utilise le paramètre Name pour spécifier les services commençant par . L’astérisque (*) est un caractère générique pour n’importe quel caractère.

Les objets sont envoyés au pipeline pour Join-String qui utilise le paramètre Property pour spécifier les noms de service. Le paramètre séparateur spécifie trois caractères spéciaux qui représentent un retour chariot (), newline () et tabulation (). Le OutputPrefix insère une étiquette Services: avec une nouvelle ligne et un nouvel onglet avant la première ligne de sortie.

Pour plus d’informations sur les caractères spéciaux, consultez about_Special_Characters.

Exemple 4 : Créer une définition de classe à partir d’un objet

Cet exemple génère une définition de classe PowerShell à l’aide d’un objet existant en tant que modèle.

Cet exemple de code utilise la mise en forme pour réduire la longueur de la ligne et améliorer la lisibilité. Pour plus d’informations, consultez about_Splatting.

$obj = [pscustomobject] @{Name = "Joe"; Age = 42}
$parms = @{
  Property = "Name"
  FormatString = '  ${0}'
  OutputPrefix = "class {`n"
  OutputSuffix = "`n}`n"
  Separator = "`n"
}
$obj.PSObject.Properties | Join-String @parms

class {
  $Name
  $Age
}

Paramètres

-DoubleQuote

Encapsule la valeur de chaîne de chaque objet de pipeline entre guillemets doubles.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-FormatString

Spécifie une chaîne de format qui spécifie la façon dont chaque objet de pipeline doit être mis en forme avant de les joindre. Utilisez l’espace réservé {0} pour représenter l’objet actuel. Si vous devez conserver les accolades ({}) dans la chaîne mise en forme, vous pouvez les échapper en doublant les accolades ({{ et }}).

Pour plus d’informations, consultez la méthode string.Format et de mise en forme composite.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifie le texte à joindre. Entrez une variable qui contient le texte, ou tapez une commande ou une expression qui obtient les objets à joindre à des chaînes.

Type:PSObject[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-OutputPrefix

Texte inséré avant la chaîne de sortie. La chaîne peut contenir des caractères spéciaux tels que retour chariot (`r), newline (`n) et tabulation (`t).

Type:String
Alias:op
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-OutputSuffix

Texte ajouté à la chaîne de sortie. La chaîne peut contenir des caractères spéciaux tels que retour chariot (`r), newline (`n) et tabulation (`t).

Type:String
Alias:os
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Property

Nom d’une propriété ou d’une expression de propriété à convertir en texte.

Type:PSPropertyExpression
Position:0
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Separator

Texte ou caractères tels qu’une virgule ou un point-virgule inséré entre le texte de chaque objet de pipeline.

Par défaut, les objets de pipeline sont joints sans séparateur. Si l'séparateur de champ de sortie variable de préférence ($OFS) est définie, cette valeur est utilisée sauf si ce paramètre est spécifié.

Note

Lorsque vous définissez $OFS sa valeur est utilisée pour joindre des tableaux lorsqu’ils sont convertis en chaînes jusqu’à ce que la variable soit réinitialisée à $null. Étant donné que l’utilisation de $OFS peut avoir des effets inattendus ailleurs dans votre code, il est préférable d’utiliser le paramètre Séparateur à la place.

Type:String
Position:1
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-SingleQuote

Encapsule la valeur de chaîne de chaque objet de pipeline entre guillemets simples.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-UseCulture

Utilise le séparateur de liste pour la culture actuelle comme délimiteur d’élément. Pour rechercher le séparateur de liste pour une culture, utilisez la commande suivante : (Get-Culture).TextInfo.ListSeparator.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

PSObject

Sorties

String