Estou usando o Hyper-V Server 2019. (Este é um pacote gratuito do Windows Server 2019 Core com a função Hyper-V instalada. É totalmente baseado em texto por padrão - não há área de trabalho GUI como acontece com os pacotes regulares do Windows Server, exceto com o terceiro soluções partidárias que não fazem parte desta questão.)
Muitas instruções para configurar diversas coisas em um servidor pressupõem que uma ferramenta gráfica esteja disponível. Por exemplo, o artigo Prepare seu ambiente para o Windows Admin Center mostra como executar a Etapa 2: Habilitar a função de servidor de arquivos usando a ferramenta gráfica normalmente disponível em outras versões do Windows Server. Muito poucas instruções incluem o método Powershell para fazer as coisas.
Aprendi a usar os "cmdlets" do Powershell para fazer várias coisas, mas estou preso na Etapa 2 acima. Acho que posso descobrir como instalar o recurso de que preciso; no entanto, para referência futura, quero poder exibir os itens nos quais estou interessado.
Para mostrar uma lista de todos os recursos, posso inserir Get-WindowsFeature
. Isso, é claro, traz uma lista longa e rolável!
Posso ver pelo diagrama nas instruções que preciso ver o que está instalado em "Serviços de Arquivo e Armazenamento". Então, eu faço isso:
Get-WindowsFeature | where {$_.InstallState -eq "Installed"}
(ou, alternativamente: Get-WindowsFeature | where Installed
)
No Powershell 5.1, isso retorna:
Posso adicionar um canal Select-Object com a propriedade SubFeatures e obter isto:
Mas, o que eu realmente quero é como a primeira imagem, mas restrito à seção "Serviços de Arquivo e Armazenamento" e todos os seus SubFeatures, independente do valor do InstallState .
Eu vi um -ExpandProperty
parâmetro usado com resultados do tipo array, mas adicionar isso em qualquer lugar do cmdlet apenas me dá um erro sobre esse parâmetro não estar disponível ou que a propriedade SubFeatures não está disponível. Mas...
Get-WindowsFeature | Get-Member
mostra a propriedade da seguinte forma:
SubFeatures Property string[] SubFeatures {get;}
Eu tentei o seguinte com o -ExpandProperty
parâmetro:
Get-WindowsFeature | where {$_.InstallState -eq "Installed"} | Select-Object -ExpandProperty DisplayName, Name, InstallState, SubFeatures
Get-WindowsFeature | where {$_.InstallState -eq "Installed"} | Select-Object DisplayName, Name, InstallState, -ExpandProperty SubFeatures
Get-WindowsFeature | where {$_.InstallState -eq "Installed"} | Select-Object DisplayName, Name, InstallState | Select-Object -ExpandProperty SubFeatures
Nota: a única razão pela qual usei o InstallState neles foi para não obter um grande resultado de rolagem. Eu estava experimentando obter a propriedade SubFeatures antes de mergulhar em como obter apenas a seção "Serviços de arquivo e armazenamento" , pois acho que isso exigirá que eu descubra os SubFeatures primeiro... Hmm ...
Além disso, como um aparte: o Powershell 7 possui um campo Display Name na saída; no entanto, está em branco. Somente os campos Nome e Estado de instalação possuem conteúdo. Curiosamente, posso obter as informações especificando-as: Get-WindowsFeature | where Installed | Select-Object DisplayName, Name, InstallState
, mas elas não possuem pequenos [X]
marcadores legais;)
De qualquer forma, o que estou procurando é como obter uma seção específica ( Serviços de Arquivo e Armazenamento aqui) e sua SubFeatures
propriedade expandida, para que eu possa ver facilmente o que está instalado ou disponível para essa seção usando o Powershell.
Ah, e para ser claro, eu tentei Get-WindowsFeature -Name FileAndStorage-Services
, que retornou apenas aquele item (sem seus SubFeatures):
Estas são as primeiras linhas da minha saída se eu usar simplesmente Get-WindowsFeature
, incluindo a File and Storage Services
seção:
Para obter a
SubFeatures
saída as durante a consultaFileAndStorage-Services
, você pode utilizar a propriedade do recurso paiName
. Ao gerar dinamicamente uma lista de seus associadosSubFeatures
, você pode garantir que eles também sejam incluídos na listagem.PowerShell
Saída
Mais detalhes
A execução desta operação revelará os valores do arquivo
SubFeatures
. Em certos casos, empregar aSelect *
abordagem pode ser particularmente vantajoso, conforme demonstrado no resultado abaixo.Os componentes restantes são triviais, por isso forneci uma seção de recursos de suporte que você pode explorar para aprender mais, caso esteja interessado ou precise se aprofundar.
Saída
Recursos de apoio
Operators $( ) @( ) :: &
-Join