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: