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

8

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

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

Quando digito isso no prompt de comando do PowerShell, ele funciona bem. Salvei-o em um arquivo ps1 e tento executá-lo no prompt do cmd digitando. \ Filename.ps1, ele é aberto no Bloco de Notas e não é executado.

Em seguida, 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 faltando parâmetro ...".

Alguma sugestão para que isso funcione 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.

Fraser Orr
fonte

Respostas:

2

Você pode executar o script do Powershell no prompt de comando, como este:

powershell -command "& .\filename.ps1"

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

powershell -command "Set-ExecutionPolicy Unrestricted"
Adam Prax
fonte
4

Corre regedit

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell

Mude o valor do (Default)atributo para 0.

Os valores possíveis são os seguintes:

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

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

potro
fonte
2

Percebi que essa pergunta já está respondida, mas se você realmente deseja executar. \ Filename.ps1, há uma maneira de fazê-lo.

Parte 1: Obter localização do PowerShell

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

Parte 2: Definir associação de arquivo .ps1

  1. Vá para o local do seu arquivo .ps1.
  2. Clique com o botão direito do mouse no arquivo .ps1.
  3. Clique esquerdo "Propriedades".
  4. Encontre a parte onde diz "Abre com:". Clique esquerdo no botão "Alterar ..." no lado direito.
  5. Clique esquerdo no botão "Procurar ..." no canto inferior direito.
  6. Destaque a barra de localização na parte superior.
  7. Clique com o botão direito na barra de localização.
  8. Clique esquerdo em "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 esquerdo "powershell.exe".
  11. Clique esquerdo "Abrir"
  12. Volte para a janela "Abrir com".
  13. Clique esquerdo "OK" no canto inferior direito.
  14. Volte para a janela de propriedades.
  15. Clique esquerdo "OK" no canto inferior direito.

Parte 3: Execute. \ Filename.ps1 no prompt de comando

  1. Execute isso no prompt de comando.

. \ filename.ps1

-YP

Pizza jovem
fonte
1

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

Pedaços de bacon
fonte