O Powershell tem algum tipo de equivalente .bashrc?


22

Eu tenho algumas funções que gostaria de carregar por padrão quando abro um PowerShell administrativo. Existe algum equivalente a dizer .bashrcou .profileque eu poderia usar para importar automaticamente os scripts ao iniciar o shell?



Sim, no Powershell é claramente chamado de "perfil".
root

Respostas:


23

O artigo mencionado no comentário de jehad explica que existem vários lugares dos quais o PowerShell pode carregar um perfil, e é isso que você deseja. Você provavelmente deseja um por usuário para o console normal do PowerShell. O caminho no qual o PowerShell verificará esse arquivo é fornecido na $profilevariável Você pode criar esse arquivo e seu diretório contendo com este comando:

New-Item $profile -Type File -Force

Ele cria um arquivo chamado Microsoft.PowerShell_profile.ps1em uma pasta chamada WindowsPowerShellna sua pasta Documentos. Então você pode abri-lo com um editor de texto:

notepad $profile

Tudo nele será executado sempre que você iniciar o console do PowerShell, independentemente de você estar elevado ou não. Usei este outro artigo para produzir uma função (que você pode usar como um cmdlet) para verificar se a instância atual do PowerShell está elevada. Coloque isso no seu novo arquivo de perfil:

Function Test-Elevated {
  $wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  $prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
  $adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
  $prp.IsInRole($adm)
}

Essa função pode ser usada na sua experiência normal do PowerShell, mas você também pode usá-la para executar apenas coisas no script de perfil quando estiver executando o nível elevado:

If (Test-Elevated) {
  echo "Be careful!"
} Else {
  echo "Eh, do whatever."
}

Como esse arquivo contém um código que será executado automaticamente, mesmo em uma instância administrativa do PowerShell, você não deseja que os programas executados sem melhoria tenham acesso de gravação a ele. Sugiro alterar sua ACL para fornecer apenas acesso de leitura à sua conta de usuário e ainda permitir aos administradores controle total. (A herança precisará ser desativada primeiro.) Você poderá editar o script apenas a partir de programas elevados.


3
Esse nome longo pode Microsoft.PowerShell_profile.ps1ser alterado para apenas profile.ps1? No primeiro artigo, ele aparece como$Home\[My ]Documents\WindowsPowerShell\Profile.ps1
nephewtom 28/01/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.