Estou distribuindo um script do PowerShell para minha equipe. O script é buscar um endereço IP do cliente Vsphere, estabelecer uma conexão mstsc e registrá-lo em um arquivo compartilhado.
No momento em que usaram o script, eles conheceram o endereço IP da máquina. Depois disso, eles sempre tendem a usar o mstsc diretamente, em vez de executar o script do PowerShell. (Como eles estão usando o mstsc, não sou capaz de saber se eles estão usando a VM com frequência ou não.)
Principalmente, eles estão me dizendo que executar o PowerShell não é simples.
Estou doente por sua preguiça.
Existe uma maneira de fazer um script do PowerShell funcionar clicando duas vezes em um arquivo .ps1?
powershell
powershell-2.0
Samselvaprabu
fonte
fonte
Respostas:
Crie um atalho com algo como este como o "Destino":
fonte
-NoProfile
também é útil, pois o perfil pode fazer todos os tipos de coisas que o script não espera.Ou, se quiser que todos os arquivos PS1 funcionem da maneira que os arquivos VBS, você poderá editar o registro da seguinte maneira:
Edite o valor padrão para algo mais ou menos assim ...
Depois, basta clicar duas vezes em todos os seus arquivos .PS1 como você gostaria. na minha humilde opinião, ser capaz de sair da caixa.
Vou chamar isso de "The Powershell De-castration Hack". LOL divirta-se!
fonte
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -File "%1"%*
onde você pode opcionalmente incluir o-ExecutionPolicy unrestricted
. Observe a alteração no final do comando que permite que zero ou mais parâmetros sejam passados para o script do PowerShell. Aspas e espaçamento entre os sinais de porcentagem devem ser exatamente como mostrado.ftype Microsoft.PowerShellScript.1=^"^%SystemRoot^%\System32\WindowsPowerShell\v1.0\powershell.exe^" -NoLogo -ExecutionPolicy Unrestricted -File ^"%1^" %*
que realizará o mesmo.Esteja ciente de que um dos recursos de segurança do PowerShell é que os usuários NÃO podem iniciar o script com um clique duplo. Tenha muito cuidado se você modificar essa configuração. Uma alternativa pode ser empacotar seu script. Alguns editores como o PrimalScript podem fazer isso. Os usuários ainda precisam do PowerShell instalado, mas podem clicar duas vezes no exe. E parece que sua equipe precisa de um pouco de educação.
fonte
Isso funcionou para mim no Windows 10 e no PowerShell 5.1:
fonte
Set-ExecutionPolicy
).Escrevi isso há alguns anos (execute-o com direitos de administrador):
fonte
Você precisará ajustar o registro. Primeiro, configure um PSDrive para HKEY_CLASSES_ROOT, pois isso não é configurado por padrão. O comando para isso é:
Agora você pode navegar e editar as chaves e os valores do Registro em HKEY_CLASSES_ROOT, como faria nos PSDrives HKCU e HKLM regulares.
Para configurar o clique duplo para iniciar os scripts do PowerShell diretamente:
Para configurar o clique duplo para abrir os scripts do PowerShell no PowerShell ISE:
Para restaurar o valor padrão (define clique duplo para abrir scripts do PowerShell no bloco de notas):
fonte
Concordo que definir uma configuração do sistema pode ser um pouco demais, mas o atalho que requer um caminho codificado não é o ideal. Um arquivo bat resolve realmente o problema
RunMyPowershellScript.bat
Agora, esse arquivo em lote pode ser clicado duas vezes, os atalhos podem ser facilmente criados para o arquivo em lotes e o script pode ser implantado em qualquer pasta.
fonte
Comandos simples do PowerShell para definir isso no registro;
fonte
ExecutionPolicy RemoteSigned
um script aleatório baixado da rede / internet (com os metadados indicando que não foi criado localmente) não será executado com um clique duplo, mas qualquer arquivo criado por cópia e colar o código em um arquivo .ps1 será executado porque não possui esses metadados associados.Reverta o valor se desejar usar o Bloco de notas como padrão novamente.
fonte
Você pode definir a associação padrão dos
ps1
arquivos parapowershell.exe
permitir que você execute um script do PowerShell clicando duas vezes nele.No Windows 10,
ps1
arquivoOpen with
Choose another app
More apps
Look for another app on this PC
.C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
.Isso mudará a associação e os
ps1
arquivos serão executados clicando duas vezes neles. Você pode alterá-lo de volta ao seu comportamento padrão, definindonotepad.exe
o aplicativo padrão.Fonte
fonte
coloque um arquivo .cmd simples na minha subpasta com o meu arquivo .ps1 com o mesmo nome; portanto, por exemplo, um script chamado "foobar" teria "foobar.ps1" e "foobar.cmd". Portanto, para executar o .ps1, tudo o que preciso fazer é clicar no arquivo .cmd do explorer ou executar o .cmd em um prompt de comando. Eu uso o mesmo nome base, porque o arquivo .cmd procurará automaticamente o .ps1 usando seu próprio nome.
O pushd / popd permite iniciar o arquivo .cmd a partir de um prompt de comandos sem precisar mudar para o diretório específico em que os scripts estão localizados. Ele será alterado para o diretório do script e, quando terminar, volte para o diretório original.
Você também pode interromper a pausa se desejar que a janela de comando desapareça quando o script terminar.
Se meu script .ps1 tiver parâmetros, eu os solicito com solicitações da GUI usando o .NET Forms, mas também os flexibilizo o suficiente para aceitar parâmetros, se eu quiser passar por eles. Dessa forma, basta clicar duas vezes no Explorer e não precisar conhecer os detalhes dos parâmetros, pois ele me pedirá o que eu preciso, com caixas de listagem ou outros formulários.
fonte
Isso é baseado na resposta de KoZm0kNoT. Eu o modifiquei para funcionar entre unidades.
Os dois pushd / popds são necessários caso o cwd do usuário esteja em uma unidade diferente. Sem o conjunto externo, o cwd na unidade com o script será perdido.
fonte
É isso que eu uso para que os scripts sejam executados como administrador por padrão:
Você precisará colar isso no regedit como o valor padrão para:
Ou aqui está um script que fará isso por você:
fonte
Se você estiver familiarizado com a administração avançada do Windows, poderá usar este pacote ADM (instruções estão incluídas nessa página) e permitir a execução de scripts do PowerShell após clicar duas vezes nesse modelo e no GPO local. Depois disso, você pode simplesmente alterar o programa padrão associado ao tipo de arquivo .ps1 para
powershell.exe
(usar a pesquisa, está bem escondido) e estará pronto para executar os scripts do PowerShell com um clique duplo.Caso contrário, eu recomendaria seguir outras sugestões, pois você pode atrapalhar todo o sistema com essas ferramentas administrativas.
Eu acho que as configurações padrão são muito rigorosas. Se alguém conseguir colocar algum código malicioso no seu computador, ele também poderá ignorar essa restrição (envolva-a em arquivo .cmd ou .exe ou truque com atalho) e tudo o que conseguirá no final é apenas para evitar você de maneira fácil de executar o script que você escreveu.
fonte
Você pode usar a funcionalidade 'SendTo' do Windows para facilitar a execução de scripts PS1. Usando esse método, você pode clicar com o botão direito do mouse em um script PS1 e executar. Isso não responde exatamente à pergunta do OP, mas está próxima. Felizmente, isso é útil para outros. Entre. Isso é útil para uma variedade de outras tarefas.
fonte
Eu usei isso (preciso executá-lo apenas uma vez); Também verifique se você tem direitos para executar:
do PowerShell com direitos elevados:
então a partir de um arquivo bat:
e voila; clicar duas vezes em um * .ps1 o executará.
fonte
The term '%1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
assoc
é necessário executar .No Windows 10, você também pode excluir a substituição do Windows Explorer para associação de extensão de arquivo:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice
além da
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command
alteração mencionada em outras respostas.Consulte https://stackoverflow.com/a/2697804/1360907
fonte
Tentei as principais respostas a esta pergunta, mas encontrei mensagens de erro. Então eu encontrei a resposta aqui:
O PowerShell diz que "a execução de scripts está desabilitada neste sistema".
O que funcionou bem para mim foi usar esta solução:
Você pode colar isso em um arquivo .bat e clicar duas vezes nele.
fonte
Em http://www.howtogeek.com/204166/how-to-configure-windows-to-work-with-powershell-scripts-more-easily :
Defina o valor padrão para o
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
de0
fonte