0
votes

Supprimer tous les espaces pour formater la sortie

J'utilise PowerShell et j'ai créé un fichier texte, qui retire une liste d'actions disponibles sur un serveur.

Ce fichier texte contient de nombreux espaces blancs, mais je dois supprimer uniquement ceux du nom du dossier, Par exemple, Test 2 $ .

Idéalement, je veux simplement supprimer cet espace afin qu'il lit test2 $ . Comme j'essaie de créer un CSV de sorte qu'il puisse être utilisé dans un autre script.

Je copie le fichier texte et le renommer à CSV puis copiez le contenu de cette CSV et en utilisant l'espace comme délimiteur. Ensuite, met ensuite les résultats dans des colonnes. Cependant, lorsqu'il le fait, il récupère également plusieurs espaces et efface ainsi tous les espaces laissant les résultats comme indiqué ci-dessous.

est-ce possible? < P> J'ai donc essayé ce qui suit: xxx

deux qui retirent tous les espaces blancs . Mais je n'ai besoin que d'enlever un.

mon code actuel xxx

Résultats dans le fichier texte xxx

résulte de CSV xxx

comme vous pouvez le constater que le chemin de Testez 2 $ en deux colonnes, mais j'en ai besoin pour être en un.


2 commentaires

Vous approchez de cela dans la mauvaise manière, il sera plus facile de mettre à jour les données avant vous l'enregistrez dans un fichier TXT. Veuillez mettre à jour votre question pour inclure le code que vous utilisez pour créer le fichier TXT afin que nous puissions voir ce que vous faites :)


Code mis à jour pour refléter ce qui est demandé


3 Réponses :


0
votes

Vous utilisez déjà une propriété calculée dans les colonnes. Utilisez la même manière pour le chemin.

Sort-Object -Property path | ft @{Name="Server";Expression={$_.__Server}},@{Name="Path";Expression={"'$_.Path'"}},Name -autosize


4 commentaires

UPS J'ai mal interprété que vous voulez changer la colonne pour le nom et non le chemin. Mais la voie devrait être la même.


Merci t-moi hjowever les résultats montrent comme suit; Je tiens à préserver le format Orignal si possible '\\ wks0001 \ root \ cimv2: win32_share. = "IPC $".' ' Est-ce possible?


Pour moi, cela fonctionne: get-wmiobject win32_share | Objet de tri-objet -Property path | ft @ {name = "serveur"; expression = {$ _.__ serveur}}}, @ {nom = "chemin"; expr ecession = {$ _. PATH.REPL ACE (")}}, @ {Nom = "nom"; expression = {$ _. Nom.replace ("" "," ")}} -Autosize (ceci est une ligne)


Fonctionne après avoir échangé par () pour Remplacer () , mentionnant cela pourrait aider à comprendre ce que vous avez changé car il n'est pas évident.



2
votes

Vous pouvez simplement mettre à jour vos propriétés calculées, le remplacement est donc utilisé uniquement par la propriété nom : xxx

vous donnera la sortie: xxx


3 commentaires

Merci, cependant, je veux faire un CSV exactement comme il l'affiche, alors en définissant le délimiteur à "", alors assignque chaque colonne A résultat jusqu'à ce que vous appuyez sur l'espace et perd les dernières colonnes données par exemple: Voir comment le test2 $ est manquant dans la troisième colonne


Vous ne mentionnez rien à propos de la chute de la colonne de données dans votre question, uniquement sur la suppression des espaces du "nom du dossier" ... Pouvez-vous mettre à jour vos questions pour expliquer clairement ce que vous voulez réellement. Montrez l'exemple de données d'entrée et de la manière dont vous souhaitez que cela sortit. Les données de code et / ou tabulaires dans les commentaires ne fonctionnent pas comme elle le masque sur une seule ligne.


Comme conseillé @james C, j'ai modifié ma question à tout reflète exactement ce que j'essaie de faire.



0
votes

La solution à la question est d'utiliser ce qui suit;

-replace '\ s \ s +'

Ceci supprime tous les espaces du fichier texte et vous pouvez remplacer par un caractère et délimiter sur ce même caractère pour créer votre CSV.


0 commentaires