it-swarm-pt.tech

Ignore 'Security Warning' executando o script a partir da linha de comando

Eu estou tentando executar um script da pasta compartilhada que eu confio:

PowerShell -file "\\server\scripts\my.ps1"

Mas recebo um aviso de segurança e tenho que pressionar 'R' para continuar

Aviso de Segurança Execute apenas os scripts que Você confia. Embora os scripts da Internet Possam ser úteis, esse script Pode prejudicar seu computador. Do Você quer executar \Server\scripts\my.ps1? [D] Não Execute [R] Execute uma vez [S] Suspender [?] Ajuda (o padrão é "D"): d

Posso ignorar este aviso? O pseudo código desejado que eu quero é:

PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"
57
alex2k8

Isso é mencionado em "Políticas de Execução do PowerShell em Imagens Padrão" no Blog de Lee Holmes e "Princípios de Orientação de Segurança do PowerShell" no Blog do Windows Power Shell .

Summary Algumas máquinas tratam os caminhos UNC como a grande internet ruim, então o PowerShell os trata como arquivos remotos. Você pode desativar esse recurso nesses servidores (UncAsIntranet = 0,) ou adicionar os computadores remotos a seus hosts confiáveis.

Se você não quiser fazer nada, o PowerShell v2 suporta um parâmetro -ExecutionPolicy que faz exatamente o que seu pseudocódigo deseja. PowerShell -ExecutionPolicy Bypass -File (...).

77
LeeHolmes

Para evitar avisos, você pode: 

Set-ExecutionPolicy bypass
41
Alfredo Jiménez

Se você estiver encontrando esse erro em um script PowerShell baixado, você pode desbloquear o script desta maneira:

  1. Clique com o botão direito do mouse no arquivo .ps1 em questão e selecione Properties

  2. Clique em Desbloquear nas propriedades do arquivo.

    enter image description here

  3. Clique em OK

37
mopsled

Apenas atribua 1 à variável de env SEE_MASK_NOZONECHECKS 

$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null
11
Jameel Grand

Tente isso, edite o arquivo com:

notepad foo.ps1:Zone.Identifier

E defina 'ZoneId = 0'

3
Don Werve

Você deseja definir a política de execução em sua máquina usando Set-ExecutionPolicy:

Set-ExecutionPolicy Unrestricted

Você pode querer investigar as várias políticas de execução para ver qual delas é a certa para você. Dê uma olhada no "help about_signing" para mais informações.

2
zdan

Eu fiz este script PowerShell para desbloquear todos os arquivos em um compartilhamento no meu servidor

Get-ChildItem "\\ServerName\e$\MyDirectory\" -Recurse -File | % {
       Unblock-File -Path $_.FullName
}
2
Peter Veg

Você baixou o script da internet?

Em seguida, remova o fluxo NTFS do arquivo usando a linha de comando do/sysinternal streams.exe .

cmd> streams.exe .\my.ps1

Agora tente executar o script novamente.

1
Sung M. Kim

Nada disso funcionou na minha instância específica. O que foi mudando para um nome NetBIOS do FQDN. 

Ao invés de:
\\server.domain.net\file.ps1
usar:
\\server\file.ps1

Usar o nome ignora a configuração "detectar automaticamente a rede da intranet" no IE.

Veja a Opção 1 no blog aqui: http://setspn.blogspot.com/2011/05/running-powershell-scripts-from-unc.html

1
lightwing

Suponha que você precise iniciar o script ps a partir da pasta compartilhada

copy \\\server\script.ps1 c:\tmp.ps1 /y && PowerShell.exe -ExecutionPolicy Bypass -File c:\tmp.ps1 && del /f c:\tmp.ps1

P.S. Reduzir o googling)

0
Alex

É muito simples de fazer, abra seu PowerShell e escreva o seguinte comando se você tiver o número de arquivos ps1. aqui você tem que mudar o caminho com o seu caminho.

PS C:\Users> Get-ChildItem -Path "D:\downlod" -Recurse | Unblock-File
0
Sapnandu

Tente set-executionpolicy "Policyname" -force switch e o aviso pop-up não deve vir.

0
swapnil