O @Jscott tem razão que este é o fluxo de dados NTFS alternativo do Zone.Identifier, juntamente com a política de execução do Powershell, que causa esta mensagem. Estas são as únicas duas coisas que se juntam para fazer com que esta mensagem aconteça.
"I don't have full control over the machine, so it's possible something got changed without my knowing."
Uma máquina tem várias políticas de execução diferentes do Powershell. Por padrão, se você digitar apenas Get-ExecutionPolicy
, apenas a política de execução do usuário atual será mostrada.
PS C:\users\ryan> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
Ao fazer Set-ExecutionPolicy Unrestricted -Scope LocalMachine
, você altera a política de execução para todos os usuários dessa máquina. Eu não vejo você fazendo essa distinção no seu post, então eu acho que você pode não perceber isso.
Se você não tiver direitos de administrador na máquina, não poderá alterar a política de execução do LocalMachine.
A outra metade da história é o fluxo alternativo do Zone.Identifier. Se os arquivos não tiverem esse fluxo de dados alternativo, você não verá esta mensagem.
Você mencionou que baixou esses scripts via WinSCP. Para que um arquivo baixado de um local de rede contenha esse fluxo de dados alternativo, ele deve ter sido baixado por um aplicativo compatível com ADS do Zone.Identifier, como um navegador da Web moderno ou o Windows Explorer. O WinSCP não é um desses aplicativos.
É por isso que os fluxos de dados alternativos do NTFS não são o que eu consideraria ser muito usado - porque é muito fácil perder o fluxo de dados alternativo se o arquivo não for transferido da maneira correta. Embora possam ser bastante úteis para armazenar metadados.
Então, vamos consertar seu problema agora. Por que não apenas reconstruir o fluxo de dados alternativo no script para que o Powershell pense novamente que você baixou essa coisa da Internet? O fato de você estar perdendo o ADS é por que você não está vendo um aviso de segurança ou um botão de desbloqueio.
Para visualizar o ADS (e confirmar que nada está lá, está em branco)
C:\> more < script.ps1:Zone.Identifier:$DATA
Para sobrescrevê-lo:
C:\> echo [ZoneTransfer] > script.ps1:Zone.Identifier:$DATA
Adicione a segunda linha:
C:\> echo ZoneId=3 >> script.ps1:Zone.Identifier:$DATA
Assim, o ADS inteiro deve ficar assim quando você digita:
C:\>more < script.ps1:Zone.Identifier:$DATA
[ZoneTransfer]
ZoneId=3
O Windows e o Powershell, mais uma vez, pensarão que você baixou esse arquivo da Internet.
Edit: Ah, e eu quero avisá-lo sobre uma última coisa. Esses "ZoneId" s ... correspondem às Zonas de Segurança (Intranet, Sites Confiáveis, Internet, etc.) que são configuráveis no Internet Explorer. Portanto, se um administrador fez algumas modificações pesadas nessas zonas de segurança do IE, isso também pode afetar o que o Windows vê como um arquivo "potencialmente prejudicial".