Acabei de começar a aprender um pouco de PowerShell e dar meus primeiros passos. Estou treinando para criar diretórios.
Eu escrevi este código abaixo que funciona, mas quero perguntar como ele pode ser ainda mais simplificado e também me ajudar a continuar aprendendo e expandindo minhas habilidades do PowerShell?
$branch1 = (@('Fox','Wolf','Cat','Cow','Snake','Elephant') | ForEach-Object { New-Item (Join-Path 'C:\tree\Animals\' $_) -ItemType Directory -force })
$branch2 = (@('Chair','Cupboard','Sofa','Table','Bed','Dresser') | ForEach-Object { New-Item (Join-Path 'C:\tree\Furniture\' $_) -ItemType Directory -force })
$branch3 = (@('Mercury','Venus','Earth','Mars','Jupiter','Saturn') | ForEach-Object { New-Item (Join-Path 'C:\tree\Planets\' $_) -ItemType Directory -force })
$FolderTree = $branch1 + $branch2 + $branch3
if ($FolderTree) { Write-Host "All sorted out."}
Possíveis ajustes simplificados
Defina os tipos de dados da matriz explicitamente como variáveis no topo.
Crie uma função e construa o
New-Item
comando dentro dela para aceitar dois argumentos pelos valores passados para a chamada de função em tempo de execução para construir dinamicamente os caminhos a serem criados.Por fim,
ForEach-Object
faça um loop sobre cada array, defina explicitamente o primeiro parâmetro na chamada da função e faça com que o segundo parâmetro seja o valor iterado do array pelo$_
espaço reservado (por exemplo_Main "animals" $_;
, ).Nota: Algumas pessoas podem considerar usar
%
oForEach-Object
alias simplificado também, então usei isso no exemplo do PowerShell abaixo, pois você pergunta sobre simplificação em particular.PowerShell
Recursos de apoio
Funções do PowerShell
about_Functions
Operadores do PowerShell $( ) @( ) :: &
ForEach-Object
Aqui está uma alternativa para a abordagem útil de @Vomit IT - Chunky Mess Style.
Essa abordagem usa uma tabela de hash e valida erros de
New-Item
. É simplificado em termos de estrutura, dinâmica e legibilidade. Não em termos de one-liners / menos código.Mesmo código sem comentários e frutas: