Hm isso é complicado. Concordo com a afirmação de que você não deve usar Format-
cmdlets em funções e deve permitir que o chamador trabalhe com os objetos.
Mas se a informação está disponível apenas como um retorno de chamada, você não tem controle do chamador, nem da definição da função, nem dos parâmetros que foram passados, então você não pode trabalhar muito nisso para obter um valor de volta para o seu código. Então, suponho que escrever para a tela seja a única opção aqui.
A razão pela qual o fluxo do valor para fl
não funciona na função, é que os cmdlets Format-
realmente não gravam nada na tela. Eles simplesmente formatam a saída. Normalmente, em uma função, esses objetos de formato são retornados e retornados de qualquer função chamada dessa função, e assim por diante. Eventualmente, se você não estiver mais em uma função, os objetos serão gravados na tela pelo host.
Para ver como isso difere de gravar explicitamente no host, considere $v = $obj | Format-List
vs $v = Write-Host $obj
. O último gravará $obj
na tela e $v
estará vazio / nulo. O primeiro não exibirá nada na tela e $v
conterá o (s) objeto (s) de formato.
Para responder à sua pergunta, você pode tentar:
$certprops | Format-List | Out-Host
Isso deve forçá-lo para o host sem retornar nada, para que ele não atrapalhe o valor de retorno do retorno de chamada. Write-Host
neste caso não funcionaria porque apenas exibiria o nome da classe.