A execução do Windows Powershell Scripts simplesmente o abre no editor

6

Eu tenho um script do PowerShell do Windows que funciona bem no editor interativo. O script é um simples cmd de uma linha de sql:

sqlcmd -S servername -d dbname -E -W -w 999 -s "," -Q "SELECT select col1,col2,'','','','','','','','','','','','','','','','','','','','','','','','','' From Table" -o "C:\sqlcmd.csv"

Quando eu digito isso no prompt de comando do powershell, ele funciona bem. Eu salvei em um arquivo ps1 e tente executá-lo a partir do prompt do cmd digitando. \ Filename.ps1, ele abre no Bloco de Notas e não o executa.

Eu então tento executá-lo como um comando como este:

powershell sqlcmd -S servername -d dbname -E -W -w 999 -s "," -Q "SELECT select col1,col2,'','','','','','','','','','','','','','','','','','','','','','','','','' From Table" -o "C:\sqlcmd.csv"

E isso diz "-s missing parameter ...".

Alguma sugestão para fazer isso funcionar corretamente? Eu li algo em algum lugar sobre a política de execução do Windows e queria saber se era algo assim.

O sistema operacional é o Windows XP, SP2.

    
por Fraser Orr 04.04.2011 / 20:11

4 respostas

1

Você pode executar o script Powershell a partir do prompt de comando assim:

powershell -command "& .\filename.ps1"

Pode ser necessário alterar sua política de execução para executar scripts do Powershell.

powershell -command "Set-ExecutionPolicy Unrestricted"
    
por 04.04.2011 / 20:43
3

Executar regedit

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell

Altere o valor do atributo (Default) para 0 .

Os valores possíveis são os seguintes:

  • 0 - execute,
  • Edit - aberto no PowerShell ISE,
  • Open - aberto no bloco de notas.

Por motivos de segurança, a Microsoft define a ação padrão como Open .

    
por 12.05.2016 / 21:01
1

Eu não usaria o PowerShell para isso. Ele não serve para isso, a não ser forçar o PowerShell a carregar, analisar a linha de variáveis e chamar o programa externo. Salve-o em um arquivo .cmd e use-o como um programa em lote, porque é o que realmente é.

    
por 24.04.2011 / 17:10
1

Percebi que esta pergunta já está respondida, mas se você realmente quer rodar. \ filename.ps1, existe uma maneira de fazer isso.

Parte 1: obter localização do PowerShell

  1. Abra o início > Todos os programas > Acessórios > Windows Powershell.
  2. Clique com o botão direito do mouse no atalho do Windows Powershell.
  3. Clique com o botão esquerdo "Abrir local do arquivo".
  4. Realce a barra de localização na parte superior.
  5. Clique com o botão direito na barra de localização.
  6. Clique com o botão esquerdo "Copiar".

Parte 2: Definir a associação de arquivos .ps1

  1. Vá até o local do seu arquivo .ps1.
  2. Clique com o botão direito no arquivo .ps1.
  3. Clique com o botão esquerdo "Propriedades".
  4. Encontre a parte onde está escrito "Abre com:". Clique com o botão esquerdo no botão "Alterar ..." no lado direito.
  5. Clique com o botão esquerdo no botão "Procurar ..." no canto inferior direito.
  6. Realce a barra de localização na parte superior.
  7. Clique com o botão direito na barra de localização.
  8. Clique com o botão esquerdo "Colar".
  9. Clique com o botão esquerdo do mouse com uma seta apontando para a direita no lado direito da barra de localização.
  10. Clique com o botão esquerdo "powershell.exe".
  11. Clique com o botão esquerdo "Abrir"
  12. Volte para a janela "Abrir com".
  13. Clique com o botão esquerdo "OK" no canto inferior direito.
  14. Volte para a janela de propriedades.
  15. Clique com o botão esquerdo "OK" no canto inferior direito.

Parte 3: Executar. \ filename.ps1 No Prompt de Comando

  1. Execute isso no prompt de comando.

.\filename.ps1

-Y.P.

    
por 25.10.2013 / 01:45