Preciso de ajuda para permitir que meu script PowerShell remoto seja executado no meu servidor Windows 2008 r2

1

Eu tenho um servidor Windows 2008 r2 com o Sql Server 2008 r2 instalado. Eu tenho um agente de servidor de Sql que tenta executar um trabalho de Powershell, mas falha: -

Message
Executed as user: FooServer\SqlServerUser. 
A job step received an error at line 1 in a PowerShell script. 
The corresponding line is '& '\polanski\Backups\DatabaseZipFooDatabases.ps1'' 
Correct the script and reschedule the job. The error information returned
    by PowerShell is: 'File \polanski\Backups\DatabaseZipFooDatabases.ps1
    cannot be loaded.
The file \polanski\Backups\DatabaseZipFooDatabases.ps1 is 
    not digitally signed.
The script will not execute on the system.

Please see "get-help about_signing" for more details..  '.
Process Exit Code -1.  
The step failed.

Ok. Então, eu executo o Powershell nesse servidor e, em seguida, defino a política de execução como irrestrita. Para verificar ..

PS C:\Users\theUser> Get-ExecutionPolicy
Unrestricted
PS C:\Users\theUser>

Kewl :) mas ainda não funciona: (

Ok ... o que acontece quando eu tento executar o powershell a partir da linha de comando ....

PS C: \ Usuários \ justin.adler > . '\ polanski \ Backups \ Database \ 7ZipMotorshoutDatabases.ps1'

Security Warning
Run only scripts that you trust. While scripts from the Internet can be useful,
    this script can potentially harm your computer.
Do you want to run \polanski\Backups\DatabaseZipFooDatabases.ps1?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D"): 

er ..... eu já não disse ao servidor que QUALQUER arquivo pode ser executado?

Observe que o arquivo está localizado em ...

\polanski\Backups\Database\

Alguém pode fazer alguma sugestão?

    
por Pure.Krome 28.04.2011 / 04:36

5 respostas

2

Parece que as tarefas do SQL Agent que executam o PowerShell executam o console SQL Server Powershell do SQL em vez do PowerShell.exe nativo. É possível que o executionpolicy esteja definido de maneira diferente nesse ambiente?

Como melhor teste, abra o SQL Management Studio e clique com o botão direito do mouse no nome da instância do servidor, escolha Iniciar Powershell e, em seguida, execute Get-ExecutionPolicy na janela Powershell do SQL Server. Não estou muito familiarizado com este host, mas é possível que ele use uma política de execução diferente.

Além disso, ajudaria na solução de problemas se você estivesse executando os testes manuais do powershell como a mesma conta que o SQL Agent está usando (desde que você possa ter configurações de política de execução por usuário com Diretiva de Grupo). Então, execute o SQLPS como 'FooServer \ SqlServerUser' e teste ou altere o serviço do SQL Agent para que ele seja executado como sua conta de usuário temporariamente, para tirar diferentes configurações do usuário da equação.

    
por 22.07.2011 / 02:39
2

O aviso de segurança não é causado pela configuração da política de execução, mas IE Configuração de segurança aprimorada . O caminho UNC para seu script ( \polanski\Backups\Database\ ) é tratado como um local "Internet" e, como o nível de segurança é, por padrão, "Alto" para locais da Internet, um aviso de segurança é emitido.

Portanto, adicione polanski à zona de sites "Intranet" no IE ou desative o aviso de segurança do IE ESC:

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap]
"UNCAsIntranet"=dword:00000000
    
por 26.03.2012 / 02:35
2

Tente

Set-ExecutionPolicy Bypass 

Isso deve fazer o trabalho

-- Bypass: Nothing is blocked and there are no warnings or prompts.

Origem

    
por 25.03.2012 / 22:51
1

Acho que isso acontece quando o script que você está executando foi rotulado pelo Windows como baixado da Internet. Se você abrir as propriedades do arquivo, existe um botão chamado "Desbloquear" no canto inferior direito? Em caso afirmativo, clique no botão e tente novamente.

Comentário Resposta
Eu perdi o fato de que estava sendo executado de um caminho UNC. Mas a opção Desbloquear estaria disponível independentemente de onde o arquivo estava localizado. O sinalizador é anexado ao próprio arquivo no recurso Fluxo de Dados Alternativos do NTFS. Independentemente disso, não está lá. Então esse não é o problema.

O problema é que o Windows considera seu caminho de compartilhamento na zona da Internet e não na Intranet? Funciona se você mover o arquivo localmente para teste?

    
por 28.04.2011 / 07:09
1

Eu estava tendo um problema semelhante e postado no stackoverflow.

link

Descobri que as configurações da política de execução do PoSH estão vinculadas às permissões de segurança do IE e que, para usar o remotesigned, você precisa ter o caminho UNC do servidor remoto adicionado como um site confiável no IE, o que eu fiz. No entanto, eu só tinha feito isso no meu perfil IE nessa máquina. O agente SQL é executado em uma conta de rede que criamos para serviços SQL. Eu tive que entrar no servidor com essa conta e adicionar o caminho UNC para esse perfil IE.

Eu verificaria se isso ajuda.

    
por 17.01.2012 / 21:40

Tags