Outra abordagem para ler um arquivo de que gosto é referida de várias maneiras como notação de variável ou sintaxe de variável e envolve simplesmente colocar uma especificação de arquivo entre chaves precedidas por um cifrão, a saber:
$content = ${C:file.txt}
Esta notação pode ser usada como um valor L ou um valor R ; assim, você poderia facilmente gravar em um arquivo com algo assim:
${D:\path\to\file.txt} = $content
Outro uso útil é que você pode modificar um arquivo local sem um arquivo temporário e sem subexpressões, por exemplo:
${C:file.txt} = ${C:file.txt} | select -skip 1
Fiquei fascinado por essa notação inicialmente porque era muito difícil descobrir qualquer coisa sobre ela! Até mesmo a especificação do PowerShell 2.0 menciona apenas uma vez, mostrando apenas uma linha de uso - mas sem nenhuma explicação ou detalhes de uso. Posteriormente, encontrei esta entrada de blog sobre variáveis do PowerShell que oferece alguns bons insights.
Uma observação final sobre como usar isso: você deve usar uma designação de unidade, ou seja, ${drive:filespec}como fiz em todos os exemplos acima. Sem a unidade (por exemplo ${file.txt}) não funciona. Sem restrições na especificação do arquivo nessa unidade: pode ser absoluto ou relativo.
$content = [IO.File]::ReadAllText(".\test.txt")parece fazer a mesma coisa que$content = (gc ".\test.txt" | out-string). Como o segundo dos dois é mais curto, é o que eu prefiro. Infelizmente, nenhum dos métodos fornecidos para calcular o número total de linhas leva em consideração as linhas em branco à direita. Alguma outra ideia?