Powershell 2: Como eliminar entradas de ajuda duplicadas?

2

Estou frequentemente fazendo chamadas como:

get-help <some-command>

no Powershell 2. Para muitos, mas não todos, desses comandos, não é mostrado o conteúdo da entrada de ajuda. Em vez disso, recebo duplicatas e apenas o objeto de ajuda é exibido:

[PS2]> get-help remove-distributiongroup | more

Name                              Category  Synopsis
----                              --------  --------
Remove-DistributionGroup          Cmdlet    Use the Remove-DistributionGroup...
Remove-DistributionGroup          Cmdlet    Use the Remove-DistributionGroup...

Sendo um novato de PS completo, eu faço um truque semelhante ao seguinte:

[PS2]> $var = get-help remove-distributiongroup
[PS2]> $var[0] | get-member
... Output ...
[PS2]> $var[0].Parameters |more
... Part of the documentation ...
[PS2]> $var[0].Synopsis |more
... Another part of the documentation ...

Algumas perguntas.

  • Os meus colegas de administrador do Windows saberão como remover as entradas duplicadas? Eu sou apenas um cara do Unix.
  • Se não, existe um método mais fácil para obter o que eu preciso, em vez do hackeado complicado que eu inventei acima?

Obrigado!

[UPDATE [:

Tentei a sugestão do pk, mas infelizmente isso não funcionou. Aqui está a saída quando canalizada através de select -unique:

Name                              Category  Synopsis
----                              --------  --------
Get-DistributionGroup             Cmdlet    Use the Get-DistributionGroup cm...
    
por Larold 20.09.2011 / 20:43

5 respostas

2

Isso provavelmente é causado por Snapins PS duplicados carregados. Se você estiver no Shell de Gerenciamento do Exchange e carregar o snap-in de gerenciamento do Exchange 2010 (talvez em um script?), Verá essas respostas de ajuda duplicadas. Ao executar o EMS, execute get-pssnapin e verifique o snap-in do E2010. Se estiver lá, use remove-pssnapin para descarregá-lo.

Veja " Get-Help Produz Tópicos Duplicados "para mais informações.

    
por 13.05.2012 / 17:18
2

Abaixo, o script está funcionando para mim, para remover entradas duplicadas no Get-Help:

$sys32Help = Get-ChildItem -Path "C:\Windows\System32\WindowsPowerShell\v1.0\en-US\" -Filter {*help*}
$sys32ModHelp = Get-ChildItem -Path "C:\Windows\System32\WindowsPowerShell\v1.0\Modules" -Filter {*help*} -Recurse -File
$compare = Compare-Object -ReferenceObject $sys32Help -DifferenceObject $sys32ModHelp -Property name -IncludeEqual
$compEQ = $compare | where sideIndicator -eq == | Select name | %{ $_.Name }
$sys32ModHelp | ?{ $_.Name -in $compEQ } | %{ Remove-Item -Path $_.FullName -Force -ErrorAction SilentlyContinue}
    
por 06.11.2017 / 11:00
1
  1. nunca use "mais" no powershell. mais usa o formatador padrão (que a tabela de formato também usa).
  2. se você tivesse usado o commandlet Format-list, você teria descoberto que get-help retorna um objeto com uma propriedade 'pssnapin' ou uma propriedade 'modulename'.

O formatador padrão pode enganar, mas a format-list ou usando o commandlet get-list listará todas as propriedades. Aposto que se você reexecutou seu comando com um formato de usuário, você obteria:     [PS2] > get-help remove-distributiongroup | selecione nome, sinopse, nome do módulo, pssnapin

Name                      Category  Synopsis                            PsSnapin
----                      --------  --------                            --------
Remove-DistributionGroup  Cmdlet    Use the Remove-DistributionGroup... ASnapin
Remove-DistributionGroup  Cmdlet    Use the Remove-DistributionGroup... AnotherSnapin

(a saída acima não é real) Mas a parte principal é que você seria capaz de ver qual módulo tem o comando duplicado.

Não é uma duplicata, porque você pode chamar cada comando assim Asnapin \ Remove-DistributionGroup ou AnotherSnapin \ Remove-DistributionGroup para usar a outra versão:)

    
por 24.07.2014 / 11:09
0

Não sei por que você está recebendo duplicatas. Não consigo recriar o problema, mas tenho uma ideia de como resolvê-lo de uma forma um pouco mais elegante.

get-help remove-distributiongroup | select -unique

Isso funciona?

O que isso retorna?

Test-Path -path "$pshome\Help.format.ps1xml"

Este arquivo contém as exibições formatadas dos objetos MamlCommandHelpInfo retornados por Get-Help.

    
por 20.09.2011 / 21:33
0

Já me deparei com alguns casos em que as pessoas que tentam executar o comando Get-Help com o Exchange 2010, 2013 recebem listagens de cmdlet duplicadas em vez do conteúdo de ajuda real. Provavelmente, isso ocorreu na execução de um script que carregou o PSSnapin para Microsoft.Exchange.Management.PowerShell.E2010. Veja o que você pode fazer para remover essas entradas específicas e talvez outras duplicadas:

Para contornar o problema rapidamente:

Basta executar: Get-Help <cmdlet name> -Category 'Function' -full

Exemplo:

Get-Help Get-MailboxFolderPermission -Category 'Function' -full

Caso contrário, para obter mais informações e resolver o problema:

Este comando mostra os dados relacionados à entrada de ajuda para o comando e também retornará o nome do snap-in que será necessário posteriormente:

Get-Help Get-Mailbox | Select Name,PSSnapIn

Este comando mostra os dados relacionados ao comando completo para o comando:

Get-Command Get-Mailbox | Select Name,CommandType

Verifique o CommandType nesta saída. Você provavelmente verá que o tipo de comando para um está listado como um cmdlet e o outro está listado como uma função. Isso provavelmente ocorreu porque, em algum momento, o snap-in de gerenciamento do Exchange foi adicionado manualmente ou por meio de um script que foi executado. Como o shell de gerenciamento do Exchange configura o shell conforme necessário, o snap-in não deve ter sido carregado, portanto, ele deve ser removido.

Use este comando para remover o snapin:

Remove-PSSnapin -Name <name of snapin from 1st command above>

Exemplo:

Remove-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010

Isso removerá o snap-in e deixará as funções individuais carregadas quando você iniciar o Shell de Gerenciamento do Exchange.

    
por 10.10.2017 / 17:33