Você parece ter dois problemas diferentes que o impedem de fazer o que deseja aqui - Redirecionamento do Sistema de Arquivos ExecutionPolicy e SysWOW64.
Política de Execução de Bypass
Para ignorar a política de execução, faça isso ao iniciar o PowerShell, da seguinte forma:
PowerShell.exe -ExecutionPolicy Bypass -File .\scriptname.ps1
Ignorar o redirecionamento do sistema de arquivos
Como o freeSSHd parece ser um aplicativo de 32 bits, o Windows tenta garantir nenhum problema de compatibilidade em sua máquina de 64 bits, por meio de alguns truques interessantes (ou comportamento "lixo", dependendo do seu preconceito). Uma maneira é através do Redirecionador do sistema de arquivos
Para desabilitar o redirecionamento do sistema de arquivos, você pode chamar o Wow64DisableWow64FsRedirection
função da API do Win32 , e todas as chamadas subseqüentes desse segmento não serão mais afetadas pelo redirecionamento:
$MethodSignature = @"
[DllImport("kernel32.dll", SetLastError=true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
"@
$Kernel32 = Add-Type -MemberDefinition $MethodSignature -Namespace "Kernel32" -Passthru
$ptr = [IntPtr]::Zero
$Result = $Kernel32::Wow64DisableWow64FsRedirection([ref]$ptr)
# Now you can call 64-bit Powershell from system32
C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe -ExecutionPolicy Bypass -File .\Script.ps1
Salve as opções acima como um script ( wrapper.ps1
) e chame-o de ssh com:
powershell -ExecutionPolicy Bypass -NoProfile -File .\wrapper.ps1
Para evitar módulos ou snap-ins de 64 bits do perfil que está sendo carregado na sessão de 32 bits