Comment puis-je écrire Ensemble-le Contenu d'un fichier à l'aide de Powershell?

Je suis en train de faire un numéro de chaîne de remplacement dans un script PowerShell.

foreach ($file in $foo) {
    $outfile = $outputpath + $file
    $content = Get-Content ($file.Fullname) -replace 'foo','bar'
    Set-Content -path $outfile -Force -Value $content 
}

J'ai validé (par le biais de journalisation de la console de $outfile et $content, dont je n'ai pas afficher dans le code ci-dessus) que les fichiers sont sélectionnés, le -replace est accuratly mise à jour du contenu, et la $outfiles sont en cours de création. Toutefois, chacun des fichiers de sortie un fichier de 0 octet. Le Set-Content ligne ne semble pas être d'écrire les données dans les fichiers. J'ai essayé de tuyauterie Set-Content à Out-File, mais qui me donne juste une erreur.

Lorsque je remplace Set-Content avec Out-File, j'obtiens une erreur d'exécution Out-File : A parameter cannot be found that matches parameter name 'path'. même si je suis de sortie $outfile à la console et voir que c'est un chemin d'accès valide.

Est-il une étape supplémentaire (comme un gros Fichier ou enregistrer le fichier de commande) j'ai besoin de prendre ou d'un autre ordre dans lequel j'ai besoin de tuyau de quelque chose pour obtenir la $content écrire à ma $outfile? Quel est le composant qui me manque?

  • Avez-vous vérifier que $contenu a bon contenu?
  • Oui...j'ai ajouté que le -replace est de modifier avec précision le contenu, quand je me connecte $content à la console...
  • Vous n'avez pas de Chemin le paramètre en Get-Content. C'est qu'une faute de frappe?
  • Oui...merci. Juste mis à jour aussi.
  • Dans cette ligne: $contenu = Get-Content -remplacer 'foo','bar' vous semblent avoir négligé de lui dire où Obtenez-le Contenu est supposé être l'obtention de son contenu. Je soupçonne que cela pourrait expliquer les fichiers de 0 octet.
  • C'était une faute de frappe---depuis corrigé. Quand je l'ai sortie $content à la console, les remplacements sont exacts, donc je sais que c'est de travailler.
  • N' $fichier contient le chemin complet vers le fichier d'entrée ou juste un nom de fichier?
  • Qui ne peuvent toujours pas travailler. Il va penser à remplacer est un paramètre de Contenu. je voudrais utiliser: $contenu = (Get-Content, $fichier.Fullname) -remplacer 'foo','bar'
  • $file est le nom de fichier uniquement, $outfile ajoute le chemin d'accès à la tête du fichier de SORTIE. C'est le fichier qui se créé comme un fichier de zéro octet. Si je comprends correctement, $file.Fullname références le chemin d'accès complet du fichier source, qui, sur la base de la console de sortie, semble être la lecture correctement.

InformationsquelleAutor dwwilson66 | 2013-12-26