Não há absolutamente nada de especial sobre /usr/bin
em sistemas de arquivos * nix, exceto que é um local que está na variável de ambiente PATH por padrão para todos os usuários. O Windows tem a mesma variável de ambiente, mas os únicos locais nele por padrão para todos os usuários são coisas como C:\Windows\System32
.
Você pode usar o System32 como uma pasta bin, mas você também pode simplesmente criar uma nova pasta para as bandejas. C:\bin
funcionaria, embora, por padrão, fosse gravável por todos os usuários, portanto, você pode querer ajustar as permissões e, em seguida, adicioná-lo à variável de ambiente PATH para toda a máquina, para que todos os usuários possam executá-las facilmente. Como alternativa, considere uma pasta bin
no diretório de cada usuário, com seu caminho na variável de ambiente PATH por usuário (quando uma variável de ambiente é definida em armazenamentos de usuários e de máquinas, ela é concatenada em uso real, máquina primeiro).
O PowerShell coloca todas as variáveis de ambiente em uma "unidade" virtual chamada Env: (semelhante a C: para arquivos ou HKLM: para a seção de registro HKLM). Leia mais sobre isso aqui: link Você pode acessar as variáveis de ambiente via $env:<VARNAME>
como qualquer outra variável (o tipo é String) ; por exemplo, você pode anexar a PATH (nota: nomes de variáveis de ambiente do Windows diferenciam maiúsculas de minúsculas) da seguinte forma:
$env:path = $env:path + ";C:\foo\bar\baz"
Isso só define o processo atual (e seus filhos), no entanto. Se você quiser armazenar o valor no registro para que eles fiquem visíveis para outros processos, ou até mesmo outros usuários (nota: variáveis de ambiente de edição que afetam outros usuários requer privilégios de administrador), a maneira mais fácil é usar classes .NET ( O PowerShell é basicamente ".NETscript"). Por exemplo, para adicionar essa pasta à variável de ambiente PATH de toda a máquina, você faria o seguinte (como Admin):
[System.Environment]::SetEnvironmentVariable("path", $env:path + "C:\foo\bar\baz", "Machine")
O parâmetro final é a representação em string de um valor na System.EnvironmentVariableTaget enum , conforme usado pelo método estático System.Environment.SetEnvironmentVariable .
Você certamente pode criar um script / cmdlet que simplifique a chamada dessa função. Você também pode usar a função [System.Environment]::GetEnvironmentVariable(name, [optional store])
static para ler variáveis de ambiente diretamente dos armazenamentos do Usuário ou da Máquina. Novamente, todas as variáveis de ambiente são Strings (e quando você obtém uma coleção delas, é um Dictionary).