Question

J'aimerais récupérer le contenu d'un fichier, les filtrer, les modifier et réécrire le résultat dans un fichier. Je fais ça:

PS C:\code> "test1" >> test.txt
PS C:\code> "test2" >> test.txt
PS C:\code> $testContents = Get-Content test.txt
PS C:\code> $newTestContents = $testContents | Select-Object {"abc -" + 

J'aimerais récupérer le contenu d'un fichier, les filtrer, les modifier et réécrire le résultat dans un fichier. Je fais ça:

"abc -" + 

J'aimerais récupérer le contenu d'un fichier, les filtrer, les modifier et réécrire le résultat dans un fichier. Je fais ça:

PS C:\code> "test1" >> test.txt
PS C:\code> "test2" >> test.txt
PS C:\code> $testContents = Get-Content test.txt
PS C:\code> $newTestContents = $testContents | Select-Object {"abc -" + 

J'aimerais récupérer le contenu d'un fichier, les filtrer, les modifier et réécrire le résultat dans un fichier. Je fais ça:

<*>

output.txt contient

<*>

Qu'est-ce qui donne avec cette première ligne? C'est presque comme si foreach rendait un IEnumerable - mais $ newTestContents.GetType () révèle qu'il s'agit d'un tableau d'objets. Alors qu'est-ce qui donne? Comment puis-je obtenir le tableau pour produire normalement sans l'en-tête étrange.

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

} PS C:\code> $newTestContents >> output.txt

output.txt contient

<*>

Qu'est-ce qui donne avec cette première ligne? C'est presque comme si foreach rendait un IEnumerable - mais $ newTestContents.GetType () révèle qu'il s'agit d'un tableau d'objets. Alors qu'est-ce qui donne? Comment puis-je obtenir le tableau pour produire normalement sans l'en-tête étrange.

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

------------ abc -test1 abc -test2

output.txt contient

<*>

Qu'est-ce qui donne avec cette première ligne? C'est presque comme si foreach rendait un IEnumerable - mais $ newTestContents.GetType () révèle qu'il s'agit d'un tableau d'objets. Alors qu'est-ce qui donne? Comment puis-je obtenir le tableau pour produire normalement sans l'en-tête étrange.

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

} PS C:\code> $newTestContents >> output.txt

output.txt contient

<*>

Qu'est-ce qui donne avec cette première ligne? C'est presque comme si foreach rendait un IEnumerable - mais $ newTestContents.GetType () révèle qu'il s'agit d'un tableau d'objets. Alors qu'est-ce qui donne? Comment puis-je obtenir le tableau pour produire normalement sans l'en-tête étrange.

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

Était-ce utile?

La solution

Utilisez ForEach au lieu de Select-Object

Autres conseils

  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> [string]$newTestContents[0]
@{"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> $newTestContents | %{
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> [string]$newTestContents[0]
@{"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> $newTestContents = $testContents | Select @{n='MyName';e={"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> [string]$newTestContents[0]
@{"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> $newTestContents | %{
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> [string]$newTestContents[0]
@{"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

. <*>

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>=abc -test1}

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>.{"abc -" +
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> [string]$newTestContents[0]
@{"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

. <*>

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>=abc -test1}

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>}} abc -test1 abc -test2

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>=abc -test1}

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>}} PS> $newTestContents MyName ------ abc -test1 abc -test2 PS> $newTestContents[0].MyName abc -test1

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>=abc -test1}

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>.{"abc -" +
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

.
PS> [string]$newTestContents[0]
@{"abc -" + 
  
    

Aussi des points bonus si vous pouvez me dire pourquoi $ newTestContents [0] .ToString () est une chaîne vide

  

Si vous regardez son type, il s'agit d'un PSCustomObject, par exemple.

PS> $newTestContents[0].GetType().FullName
System.Management.Automation.PSCustomObject

Si vous examinez l'implémentation ToString () de PSCustomObject dans Reflector, vous voyez ceci:

public override string ToString()
{
    return "";
}

Pourquoi ça fait ça, je ne sais pas. Cependant, il est probablement préférable d’utiliser la contrainte de type chaîne dans PowerShell, par exemple:

. <*>

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>=abc -test1}

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>}} abc -test1 abc -test2

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>=abc -test1}

Vous recherchiez peut-être ce résultat:

<*>

Ceci montre que lorsque vous utilisez Select-Object avec un script simple, le contenu de ce scriptet forme le nouveau nom de la propriété sur l'objet PSCustomObject créé. En général, l'approche de Nestor est la voie à suivre, mais à l'avenir, si vous devez synthétiser des propriétés comme celle-ci, utilisez une table de hachage comme celle-ci:

<*>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top