Powershell: Não é possível conectar ao Office 365 / Exchange Online com PowerShell

Criado em 28 nov. 2017  ·  70Comentários  ·  Fonte: PowerShell/PowerShell

Não consigo me conectar ao Office 365 / Exchange Online com PowerShell.
Aparentemente, outros podem com a versão mais recente do push, mas não está funcionando para mim no macOS 10.12 ou 10.13 com pwsh 6.0.0-rc

Recebo um erro ao criar a New-PSSession. Dependendo da sintaxe exata do comando que estou usando, ele diz New-PSSession: Este conjunto de parâmetros requer WSMan e nenhuma biblioteca de cliente WSMan de suporte foi encontrada ou o PowerShell fecha com uma exceção não tratada e aborta o trap 6.

Passos para reproduzir

Instale o PowerShell 6.0.0-rc no macOS 10.12 ou 10.13.
Use Get-Credential para obter uma credencial de administrador do Office 365 e, em seguida, use New-PSSession para criar uma nova sessão.

[kai<strong i="11">@blackmac</strong> ~]$ pwsh
PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/kai> $PSVersionTable                                        

Name                           Value                                           
----                           -----                                           
PSVersion                      6.0.0-rc                                        
PSEdition                      Core                                            
GitCommitId                    v6.0.0-rc                                       
OS                             Darwin 16.7.0 Darwin Kernel Version 16.7.0: T...
Platform                       Unix                                            
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                         
PSRemotingProtocolVersion      2.3                                             
SerializationVersion           1.1.0.1                                         
WSManStackVersion              3.0                                             


PS /Users/kai> $UserCredential = Get-Credential                       

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: ***********

PS /usr/local/microsoft> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                     
New-PSSession : This parameter set requires WSMan, and no supported WSMan client library was found. WSMan is either not installed or unavailable for this system.
At line:1 char:12
+ $Session = New-PSSession -ConfigurationName Microsoft.Exchange -Conne ...
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ResourceUnavailable: (:) [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : System.Management.Automation.Remoting.PSRemotingDataStructureException,Microsoft.PowerShell.Commands.NewPSSessionCommand

PS /Users/kai> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid -Credential $UserCredential -Authentication Basic -AllowRedirection                      

An error has occurred that was not properly handled. Additional information is shown below. The PowerShell process will exit.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Management.Automation.Remoting.PrioritySendDataCollection.Clear()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.Finalize()
Abort trap: 6
[kai<strong i="12">@blackmac</strong> ~]$ 

Você notará no prompt na última linha acima que ele me colocou de volta no shell bash.

Comportamento esperado

Espera-se que New-PSSession funcione no macOS

Comportamento real

Dependendo da sintaxe precisa do comando, New-PSSession retorna uma mensagem de erro:
New-PSSession: este conjunto de parâmetros requer WSMan, e nenhuma biblioteca de cliente WSMan compatível foi encontrada
Ou New-PSSession tem uma exceção não tratada e o PowerShell fecha com abort trap 6.

As diferenças na sintaxe estão com o ConnectionUri - se há ou não uma barra final no uri parece fazer a diferença. Com uma barra final, recebo o erro sobre a falta do WSMan. Sem a barra final, a sessão do PowerShell é abortada.

Com barra final:

PS /Users/kai> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                     
New-PSSession : This parameter set requires WSMan, and no supported WSMan client library was found. WSMan is either not installed or unavailable for this system.
At line:1 char:12
+ $Session = New-PSSession -ConfigurationName Microsoft.Exchange -Conne ...
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ResourceUnavailable: (:) [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : System.Management.Automation.Remoting.PSRemotingDataStructureException,Microsoft.PowerShell.Commands.NewPSSessionCommand

Sem barra final:

PS /Users/kai> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid -Credential $UserCredential -Authentication Basic -AllowRedirection                      

An error has occurred that was not properly handled. Additional information is shown below. The PowerShell process will exit.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Management.Automation.Remoting.PrioritySendDataCollection.Clear()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.Finalize()
Abort trap: 6

Dados ambientais

PS /Users/kai> $PSVersionTable                                                                                                                                                                                Name                           Value                                                                   
----                           -----                                                                  
PSVersion                      6.0.0-rc                                                               
PSEdition                      Core                                                                   
GitCommitId                    v6.0.0-rc                                                              
OS                             Darwin 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT ...
Platform                       Unix                                                                   
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                
PSRemotingProtocolVersion      2.3                                                                    
SerializationVersion           1.1.0.1                                                                
WSManStackVersion              3.0                                                                    
Issue-Discussion OS-macOS Resolution-Fixed WG-Remoting

Comentários muito úteis

Oi pessoal,

com relação à versão openssl, forcei o brew a usar a versão 1.02 e isso corrigiu meus problemas com o pwsh O365. Os comandos que executei são ...

brew uninstall openssl;
brew uninstall openssl; (para garantir que nada foi deixado para trás)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Crédito: @kensoh

Obrigado.

Todos 70 comentários

Isso está funcionando para mim em 10.13.1. Você pode confirmar que em $ PSHome você tem libpsrpclient.dylib ?

PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/kai> cd $PSHome                                                       
PS /usr/local/microsoft/powershell/6.0.0-rc> ls -al *.dylib                     
-rw-r--r--  1 root  wheel    70224 31 Oct 17:27 System.Globalization.Native.dylib
-rw-r--r--  1 root  wheel    13484 31 Oct 17:27 System.IO.Compression.Native.dylib
-rw-r--r--  1 root  wheel    61460 31 Oct 17:27 System.Native.dylib
-rw-r--r--  1 root  wheel    16932 31 Oct 17:27 System.Net.Http.Native.dylib
-rw-r--r--  1 root  wheel    15132 31 Oct 17:27 System.Net.Security.Native.dylib
-rw-r--r--  1 root  wheel    46016 31 Oct 17:27 System.Security.Cryptography.Native.Apple.dylib
-rw-r--r--  1 root  wheel    75708 31 Oct 17:27 System.Security.Cryptography.Native.OpenSsl.dylib
-rw-r--r--  1 root  wheel  2571480 31 Oct 17:27 libclrjit.dylib
-rw-r--r--  1 root  wheel  6894904 31 Oct 17:27 libcoreclr.dylib
-rw-r--r--  1 root  wheel   883740 31 Oct 17:27 libdbgshim.dylib
-rw-r--r--  1 root  wheel   869664 31 Oct 17:27 libhostfxr.dylib
-rw-r--r--  1 root  wheel  1006336 31 Oct 17:27 libhostpolicy.dylib
-rw-r--r--  1 root  wheel   843792 14 Nov 11:37 libmi.dylib
-rw-r--r--  1 root  wheel  3081760 31 Oct 17:27 libmscordaccore.dylib
-rw-r--r--  1 root  wheel  2021168 31 Oct 17:27 libmscordbi.dylib
-rw-r--r--  1 root  wheel    20568  4 Nov 09:08 libpsl-native.dylib
-rw-r--r--  1 root  wheel   224784 15 Nov 07:39 libpsrpclient.dylib
-rw-r--r--  1 root  wheel   553360 31 Oct 17:27 libsos.dylib
PS /usr/local/microsoft/powershell/6.0.0-rc> 

@ kai-h você tem a biblioteca certa com o tamanho de arquivo e permissões certos. DYLD_LIBRARY_PATH está definido? Qual é o resultado de $env:DYLD_LIBRARY_PATH ?

É indefinido.
`` `Powershell
PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. Todos os direitos reservados.

https://aka.ms/pscore6-docs
Digite 'ajuda' para obter ajuda.

PS / Usuários / kai> $ env: DYLD_LIBRARY_PATH
PS / Usuários / kai>
`` ``

O que [System.Environment]::Is64BitProcess retorna?

PS /Users/kai> [System.Environment]::Is64BitProcess                             
True

@ kai-h try (no terminal antes de iniciar o pwsh):

export DYLD_LIBRARY_PATH=/usr/local/microsoft/powershell/6.0.0-rc:${DYLD_LIBRARY_PATH}
pwsh
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

Obrigado por sua persistência com isso. Ainda estou recebendo o mesmo erro.

[kai<strong i="6">@hobbes</strong> ~]$ export DYLD_LIBRARY_PATH=/usr/local/microsoft/powershell/6.0.0-rc:${DYLD_LIBRARY_PATH}
[kai<strong i="7">@hobbes</strong> ~]$ pwsh
PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/kai> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                 

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: ********


An error has occurred that was not properly handled. Additional information is shown below. The PowerShell process will exit.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Management.Automation.Remoting.PrioritySendDataCollection.Clear()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.Finalize()
Abort trap: 6
[kai<strong i="8">@hobbes</strong> ~]$ 

Gostaria de confirmar que posso me conectar com êxito ao Office 365 do PowerShell hospedado em uma máquina virtual Ubuntu do Azure, usando exatamente os mesmos detalhes que estou tentando no Mac.

PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /home/kai>  $PSVersionTable                                                                                                                               

Name                           Value                                                                                                                        
----                           -----                                                                                                                        
PSVersion                      6.0.0-rc                                                                                                                     
PSEdition                      Core                                                                                                                         
GitCommitId                    v6.0.0-rc                                                                                                                    
OS                             Linux 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016                                                           
Platform                       Unix                                                                                                                         
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                      
PSRemotingProtocolVersion      2.3                                                                                                                          
SerializationVersion           1.1.0.1                                                                                                                      
WSManStackVersion              3.0                                                                                                                          


PS /home/kai> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                                                                                                          

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: ********

PS /home/kai> Import-PSSession $Session
(at this point PowerShell starts loading remote modules etc and preparing the session)

O que vou fazer para remover quaisquer possíveis problemas por eu ter ajustado algo em meu Mac que está em conflito com isso é configurar uma instalação limpa do macOS 10.12 e, em seguida, uma nova instalação do PowerShell 6.0.0-rc e teste se funcionar esta noite.

É dup # 3606

O problema # 3606 é uma espécie de dup, mas eles também viram o erro que não vi ocorrer em meus testes.

New-PSSession : Unable to load DLL 'libpsrpclient':...

Consegui reproduzir isso em uma instalação limpa do macOS 10.12.6 e uma instalação limpa do PowerShell 6.0.0-rc. Tudo está com as configurações padrão, nova conta de administrador criada na primeira inicialização e nenhuma configuração alterada para o aplicativo Terminal.

Last login: Thu Nov 30 08:11:57 on ttys000
Administrators-Mac-mini:~ admin$ pwsh
PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/admin> $PSVersionTable                                                

Name                           Value                                           
----                           -----                                           
PSVersion                      6.0.0-rc                                        
PSEdition                      Core                                            
GitCommitId                    v6.0.0-rc                                       
OS                             Darwin 16.7.0 Darwin Kernel Version 16.7.0: T...
Platform                       Unix                                            
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                         
PSRemotingProtocolVersion      2.3                                             
SerializationVersion           1.1.0.1                                         
WSManStackVersion              3.0                                             


PS /Users/admin> $env:DYLD_LIBRARY_PATH                                         
PS /Users/admin> [System.Environment]::Is64BitProcess                           
True
PS /Users/admin> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                             

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: *********


An error has occurred that was not properly handled. Additional information is shown below. The PowerShell process will exit.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Management.Automation.Remoting.PrioritySendDataCollection.Clear()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager.CloseAsync()
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.Finalize()
Abort trap: 6
Administrators-Mac-mini:~ admin$ 

Aqui estão os resultados de uma instalação 10.12.6 limpa

Last login: Thu Nov 30 08:48:11 on ttys000
Administrators-Mac-mini:~ admin$ pwsh
PowerShell v6.0.0-rc
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/admin> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                                                               

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: ********


An error has occurred that was not properly handled. Additional information is shown below. The PowerShell process will exit.

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Management.Automation.Remoting.PrioritySendDataCollection.Clear() in /PowerShell/src/System.Management.Automation/engine/remoting/fanin/PriorityCollection.cs:line 158
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.CloseAsync() in /PowerShell/src/System.Management.Automation/engine/remoting/fanin/BaseTransportManager.cs:line 949
   at System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager.CloseAsync() in /PowerShell/src/System.Management.Automation/engine/remoting/fanin/WSManTransportManager.cs:line 1219
   at System.Management.Automation.Remoting.Client.BaseClientTransportManager.Finalize() in /PowerShell/src/System.Management.Automation/engine/remoting/fanin/BaseTransportManager.cs:line 998
Abort trap: 6
Administrators-Mac-mini:~ admin$ 

Isso pode estar relacionado aos problemas que eu estava observando, documentados no número 4029
Da forma como está, PowerShell 6.0.0-rc requer o uso de bibliotecas OpenSSL instaladas pelo Homebrew

Para ajuda.

Eu tive o mesmo problema em um contêiner docker do Debian 9. Depois de ler os comentários acima, vi que havia algumas bibliotecas de links quebradas e era porque as bibliotecas do sistema são mais novas do que o esperado. Aí fiz alguns links simbólicos e deu tudo certo.

root @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ldd /opt/microsoft/powershell/6.0.1/libmi.so

    _linux-vdso.so.1 (0x00007ffd4b7fd000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f86cb670000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f86cb46c000)
    libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007f86cb25e000)
    **libssl.so.1.0.0 =>  not found
    libcrypto.so.1.0.0 => not found**
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f86cac56000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f86cb88d000)
    libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f86caa2e000)
    libcrypto.so.1.0.2 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2 (0x00007f86ca5ca000)
    libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007f86ca3c4000)_

root @ db70f6f67c51 : /opt/microsoft/powershell/6.0.1# cd / usr / lib / x86_64-linux-gnu /
root @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ln -s libssl.so.1.0.2 libssl.so.1.0.0
root @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ls -l libssl *

_-rw-r - r-- 1 root root 738444 Nov 2 11:29 libssl.a
lrwxrwxrwx 1 root root 13 Nov 2 11:29 libssl.so -> libssl.so.1.1
lrwxrwxrwx 1 root root 15 Fev 21 17:27 libssl.so.1.0.0 -> libssl.so.1.0.2
-rw-r - r-- 1 root root 431232 Dez 13 22:09 libssl.so.1.0.2
-rw-r - r-- 1 root root 442920 Nov 2 11:29 libssl.so.1.1_

root @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ln -s libcrypto.so.1.0.2 libcrypto.so.1.0.0
root @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ldd /opt/microsoft/powershell/6.0.1/libmi.so

    _linux-vdso.so.1 (0x00007ffdde3b4000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4e51539000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4e51335000)
    libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007f4e51127000)
    libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f4e50ebe000)
    libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f4e50a5a000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4e506bb000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f4e51756000)
    libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f4e50493000)
    libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007f4e5028d000)_

Eu estava tendo um problema semelhante, mas para mim o problema era com o parâmetro -AllowRedirection.

Se eu tentasse no linux.

$Session = $O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection

New-PSSession : [ps.outlook.com] Connecting to remote server ps.outlook.com failed with the following error message : Basic Authorization failed for user [email protected] For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:12
+ $Session = New-PSSession -ConfigurationName Microsoft.Exchange -Conne ...
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : 2,PSSessionOpenFailed

Minha versão PowerShell

PS /> $PSVersionTable                                                                                                                                               

Name                           Value                                                                                                                               
----                           -----                                                                                                                               
PSVersion                      6.0.2                                                                                                                               
PSEdition                      Core                                                                                                                                
GitCommitId                    v6.0.2                                                                                                                              
OS                             Linux 4.13.0-37-generic #42-Ubuntu SMP Wed Mar 7 14:13:23 UTC 2018                                                                  
Platform                       Unix                                                                                                                                
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                             
PSRemotingProtocolVersion      2.3                                                                                                                                 
SerializationVersion           1.1.0.1                                                                                                                             
WSManStackVersion              3.0       

Mesma coisa no Powershell no Windows 10

PS C:\Users\user> $O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection

WARNING: Your connection has been redirected to the following URI: "https://ps.outlook.com/PowerShell-LiveID?PSVersion=5.1.16299.251 "

Recebo um aviso de redirecionamento, mas obtenho a conexão com êxito.

Minha PSversion no Windows 10

PS C:\Users\user> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.16299.251
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.251
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Agora executando o mesmo comando no linux, mas usando o URI redirecionado que obtivemos no windows.

PS /> $O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/PowerShell-LiveID?PSVersion=5.1.16299.251" -Credential $O365Cred -Authentication Basic -AllowRedirection                                                                                                                
PS /> $O365Session                                                                                                                                                  

 Id Name            ComputerName    ComputerType    State         ConfigurationName     Availability
 -- ----            ------------    ------------    -----         -----------------     ------------
  6 WinRM6          ps.outlook.com  RemoteMachine   Opened        Microsoft.Exchange       Available

Isso me parece que o problema é que o parâmetro allowredirection não está funcionando corretamente.

Depois de instalar o PowerShell mais recente (v6.0.2), isso não está mais funcionando para mim:

[kai<strong i="6">@blackmac</strong> ~]$ pwsh
PowerShell v6.0.2
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS /Users/kai> $PSVersionTable                                                                                                             

Name                           Value                                                                                                      
----                           -----                                                                                                      
PSVersion                      6.0.2                                                                                                      
PSEdition                      Core                                                                                                       
GitCommitId                    v6.0.2                                                                                                     
OS                             Darwin 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar  5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X...
Platform                       Unix                                                                                                       
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                    
PSRemotingProtocolVersion      2.3                                                                                                        
SerializationVersion           1.1.0.1                                                                                                    
WSManStackVersion              3.0                                                                                                        


PS /Users/kai> $UserCredential = Get-Credential                                                                                            

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: ***********

PS /Users/kai> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection                                                                     
New-PSSession : [outlook.office365.com] Connecting to remote server outlook.office365.com failed with the following error message : Client did not get proper response from server. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:12
+ $Session = New-PSSession -ConfigurationName Microsoft.Exchange -Conne ...
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : 1,PSSessionOpenFailed
PS /Users/kai> 

@ SteveL-MSFT Devemos considerar isso instável, UX ruim ou mal documentado?

Isso é algo que mudou nas versões mais recentes para que a autenticação Básica não funcione ou é mais do que isso? Fico feliz em fazer mais alguns testes, se necessário.

As atualizações de serviço para 6.0.0 não tiveram nenhuma mudança que afetasse isso. Não tenho certeza se houve alguma mudança no lado do servidor. cc @dantraMSFT

No MacOS, vejo uma regressão no 6.0.1 com um erro ERROR_WSMAN_INVALID_SELECTORS consistente. Não vejo nenhum problema em 6.0.0 e 6.0.2 e libpsrpclient não mudou nessas versões. A máquina ainda não foi atualizada para High Sierra, então isso pode estar contribuindo.

Meu teste foi em um Mac que foi atualizado recentemente do macOS 10.12 Sierra para o 10.13 High Sierra. Eu também atualizei o PowerShell de qualquer versão anterior (provavelmente 6.0.0 ou 6.0.1) para a versão mais recente 6.0.2. Eu também atualizei minha instalação do MacPorts para a versão mais recente e atualizei todas as minhas portas. Eu tenho um link simbólico para o PowerShell de onde espera encontrar as bibliotecas OpenSSL instaladas pelo Homebrew para onde são instaladas pelo MacPorts e tudo isso estava funcionando antes das atualizações para se conectar ao Office 365

Tenho o PowerShell 6.0.2 instalado. Eu instalei MacPorts e criei o pacote OpenSSL e instalei-o. Quando tento criar $ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI https://outlook.office365.com/powershell-liveid/ -Credential $ O365Cred -Authenticatin Basic -Allowredirection e recebo o mesmo erro de New -PSSession: Este conjunto de parâmetros requer WSMan e nenhuma biblioteca de cliente WSMan suportada foi encontrada.
$ Psversiontable

Valor do Nome
---- -----
PSVersion 6.0.2
PSEdition Core
GitCommitId v6.0.2
OS Darwin 17.5.0 Darwin Kernel Versão 17.5.0: Sex, 13 de abril 19:32:32 PDT 2018; root: x ...
Plataforma Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

O que preciso fazer para corrigir o problema do WSMan?

Sou novo no O365 e no PS no Mac. Estou enfrentando a mesma mensagem de erro aqui. Agradeceria qualquer ajuda que puder obter.

Valor do Nome
---- -----
PSVersion 6.0.2
PSEdition Core
GitCommitId v6.0.2
OS Darwin 17.6.0 Darwin Kernel Versão 17.6.0: Ter, 8 de maio 15:22:16 PDT 2018; root: xnu-4570.61.1 ~ ...
Plataforma Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

PS / Users / AdityaBhasin> $ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.protection.outlook.com/powershell-liveid/ -Credential $ UserCredential -Authentication Basic -AllowRedirection
New-PSSession: Este conjunto de parâmetros requer WSMan e nenhuma biblioteca de cliente WSMan compatível foi encontrada. WSMan não está instalado ou não está disponível para este sistema.
Na linha: 1 char: 12

  • $ Session = New-PSSession -ConfigurationName Microsoft.Exchange -Conne ...
  • ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~~
  • CategoryInfo: ResourceUnavailable: (:) [New-PSSession], PSRemotingTransportException
  • FullyQualifiedErrorId: System.Management.Automation.Remoting.PSRemotingDataStructureException, Microsoft.PowerShell.Commands.NewPSSessionCommand

PS / Usuários / AdityaBhasin>

Versão do sistema: macOS 10.13.5 (17F77)

Você tem OpenSSL instalado com o Homebrew? Ou, se estiver usando MacPorts (que eu recomendo), você vinculou o diretório da biblioteca OpenSSL a onde o PowerShell acha que deveria estar?

sudo ln -s /opt/local/lib /usr/local/opt/openssl/lib

UAU! Muito obrigado @ kai-h, executei o comando para atualizar o SSL aberto com o Homebrew e agora parece funcionar para mim. Vou atualizar aqui se enfrentar qualquer novo desafio. Obrigado novamente!

Instalar o PowerShell v6.0.4 no OSX 10.13.3 corrigiu o problema para mim.

Link de instalação:
https://github.com/PowerShell/PowerShell/releases/download/v6.0.4/powershell-6.0.4-osx.10.12-x64.pkg

@ kai-h Você pode confirmar?

Reabrindo este problema: a versão 6.1.0 no Mojave está resultando no mesmo problema ao tentar se conectar ao Office 365.

Isso também está se reproduzindo para mim com o Mojave

Isso funciona para mim com 6.0.4 no Mojave com bibliotecas OpenSSL instaladas via MacPorts, NÃO Homebrew.

`` `` PowerShell
[ kai @ blackmac ~] $ pwsh
PowerShell v6.0.4
Copyright (c) Microsoft Corporation. Todos os direitos reservados.

https://aka.ms/pscore6-docs
Digite 'ajuda' para obter ajuda.

PS / Users / kai> $ PSVersionTable

Valor do Nome
---- -----
PSVersion 6.0.4
PSEdition Core
GitCommitId v6.0.4
OS Darwin 18.0.0 Darwin Kernel Versão 18.0.0: Quarta, 22 de agosto 20:13:40 PDT 2018; root: xnu-4903.201.2 ~ 1 / RELEASE_X86_64
Plataforma Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

PS / Usuários / kai> office365.ps1

Solicitação de credencial PowerShell
Insira suas credenciais.
Usuário: [email protected]
Senha do usuário [email protected] : * *

AVISO: Os nomes de alguns comandos importados do módulo 'tmp_nlc54neg.nu0' incluem verbos não aprovados que podem torná-los menos detectáveis. Para encontrar os comandos com verbos não aprovados, execute o comando Import-Module novamente com o parâmetro Verbose. Para obter uma lista de verbos aprovados, digite Get-Verb. ModuleType Nome da versão ExportedCommands ---------- ------- ---- ---------------- Script 1.0 tmp_nlc54neg.nu0 {Add-AvailabilityAddressSpace , Add-DistributionGroupMember, Add-MailboxFolderPermission, Add-MailboxLocation ...}

PS / Usuários / kai>
`` ``

Isso também funciona para mim quando eu atualizo para 6.1.0 no Mojave.
Para reiterar, estou usando bibliotecas OpenSSH de MacPorts e as vinculei ao local que o PowerShell espera vê-las.
sudo ln -s /opt/local/lib /usr/local/opt/openssl/lib
Então, quando eu executo o pwsh
`` `` PowerShell
[ kai @ blackmac ~] $ pwsh
PowerShell 6.1.0
Copyright (c) Microsoft Corporation. Todos os direitos reservados.

https://aka.ms/pscore6-docs
Digite 'ajuda' para obter ajuda.

PS / Users / kai> $ PSVersionTable

Valor do Nome
---- -----
PSVersion 6.1.0
PSEdition Core
GitCommitId 6.1.0
OS Darwin 18.0.0 Darwin Kernel Versão 18.0.0: Quarta, 22 de agosto 20:13:40 PDT 2018; root: xnu-4903.201.2 ~ 1 / RELEASE_X86_64
Plataforma Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

PS / Usuários / kai> office365.ps1

Solicitação de credencial PowerShell
Insira suas credenciais.
Usuário: [email protected]
Senha do usuário [email protected] : * *

AVISO: Os nomes de alguns comandos importados do módulo 'tmp_kllnlbam.5cg' incluem verbos não aprovados que podem torná-los menos detectáveis. Para encontrar os comandos com verbos não aprovados, execute o comando Import-Module novamente com o parâmetro Verbose. Para obter uma lista de verbos aprovados, digite Get-Verb. ModuleType Nome da versão ExportedCommands ---------- ------- ---- ---------------- Script 1.0 tmp_kllnlbam.5cg {Add-AvailabilityAddressSpace , Add-DistributionGroupMember, Add-MailboxFolderPermission, Add -...

PS / Usuários / kai>

`` ``

Usar a versão MacPorts do OpenSSL funcionou para mim.

Estou reproduzindo isso no Mojave com Macports OpenSSL:
Mac OS Mojave 10.14.5
PowerShell 6.2.3

As ferramentas do xcode estão instaladas. Eu instalei o PowerShell com homebrew.

Name                           Value
----                           -----
PSVersion                      6.2.3
PSEdition                      Core
GitCommitId                    6.2.3
OS                             Darwin 18.6.0 Darwin Kernel Version 18.6.0: Thu…
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Eu instalei o openssl usando as instruções do

ws2784:~ travis.brackett$ port installed
The following ports are currently installed:
  openssl @1.1.1d_0 (active)
  zlib @1.2.11_0 (active)

Eu criei o link simbólico:

sudo mkdir -p /usr/local/opt/openssl
sudo ln -s /opt/local/lib /usr/local/opt/openssl/lib

wsnnnn:~ travbrack$ ls -lha /usr/local/opt/openssl/lib/
total 14496
drwxr-xr-x  16 root  wheel   512B Nov 22 14:39 .
drwxr-xr-x  11 root  wheel   352B Nov 22 13:58 ..
-rw-r--r--   1 root  wheel     0B Oct 20 13:21 .turd_MacPorts
drwxr-xr-x   4 root  admin   128B Nov 22 14:39 engines-1.1
lrwxr-xr-x   1 root  wheel    14B Nov 22 14:28 lib -> /opt/local/lib
-rwxr-xr-x   1 root  admin   2.1M Sep 15 05:22 libcrypto.1.1.dylib
-rw-r--r--   1 root  admin   3.7M Sep 15 05:22 libcrypto.a
lrwxr-xr-x   1 root  admin    19B Sep 15 05:22 libcrypto.dylib -> libcrypto.1.1.dylib
-rwxr-xr-x   1 root  admin   479K Sep 15 05:22 libssl.1.1.dylib
-rw-r--r--   1 root  admin   704K Sep 15 05:22 libssl.a
lrwxr-xr-x   1 root  admin    16B Sep 15 05:22 libssl.dylib -> libssl.1.1.dylib
-rwxr-xr-x   1 root  admin    79K Oct  1  2018 libz.1.2.11.dylib
lrwxr-xr-x   1 root  admin    17B Oct  1  2018 libz.1.dylib -> libz.1.2.11.dylib
-rw-r--r--   1 root  admin    95K Oct  1  2018 libz.a
lrwxr-xr-x   1 root  admin    17B Oct  1  2018 libz.dylib -> libz.1.2.11.dylib
drwxr-xr-x   6 root  admin   192B Nov 22 14:39 pkgconfig
wsnnnn:~ travbrack$ ls -lha /usr/local/opt/openssl/lib
lrwxr-xr-x  1 root  admin    14B Nov 22 14:02 /usr/local/opt/openssl/lib -> /opt/local/lib

Reiniciei meu terminal e tentei entrar-pssession:

`` `
PS / Usuários / travbrack> enter-pssession nome do computador
enter-pssession: Este conjunto de parâmetros requer WSMan e nenhuma biblioteca de cliente WSMan compatível foi encontrada. WSMan não está instalado ou não está disponível para este sistema.
Na linha: 1 caractere: 1

  • enter-pssession nome do computador
  • ~ ~ ~ ~ ~ ~~~
  • CategoryInfo: InvalidArgument: (computername: String) [Enter-PSSession], PSRemotingTransportException
  • FullyQualifiedErrorId: CreateRemoteRunspaceFailed
    `` `

Qualquer ajuda seria muito apreciada

Comentando de # 10600

Eu tive o mesmo problema, consegui resolvê-lo vinculando uma versão mais antiga do openssl do brew ao brew switch openssl 1.0.2s

Para mim, mudar para o openssl 1.0.2r também funcionou. Eu tinha o openssl 1.1 instalado através do brew como padrão, mas eles não funcionaram

Oi pessoal,

com relação à versão openssl, forcei o brew a usar a versão 1.02 e isso corrigiu meus problemas com o pwsh O365. Os comandos que executei são ...

brew uninstall openssl;
brew uninstall openssl; (para garantir que nada foi deixado para trás)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Crédito: @kensoh

Obrigado.

@leeharrison que funcionou para mim executando o mojave com o pwsh 6.0.4. Tentei todas as sugestões anteriores e nada mais funcionou para mim.

obrigado @leeharrison Eu também tive esse problema no High Sierra com o pwsh 6.0.4 e sua sugestão foi corrigida para mim também.

Podemos garantir que o PowerShell no macOS não dependa de uma versão mais antiga e insegura das bibliotecas OpenSSL? Também é uma má prática exigir explicitamente que a biblioteca seja instalada pelo Homebrew com um caminho codificado.

Oi pessoal,

com relação à versão openssl, forcei o brew a usar a versão 1.02 e isso corrigiu meus problemas com o pwsh O365. Os comandos que executei são ...

brew uninstall openssl;
brew uninstall openssl; (para garantir que nada foi deixado para trás)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Crédito: @kensoh

Obrigado.

Isso definitivamente está funcionando bem! Obrigado.

Oi pessoal,

com relação à versão openssl, forcei o brew a usar a versão 1.02 e isso corrigiu meus problemas com o pwsh O365. Os comandos que executei são ...

brew uninstall openssl;
brew uninstall openssl; (para garantir que nada foi deixado para trás)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Crédito: @kensoh

Obrigado.

Isso está funcionando com Catalina 10.15.4

Oi pessoal,
com relação à versão openssl, forcei o brew a usar a versão 1.02 e isso corrigiu meus problemas com o pwsh O365. Os comandos que executei são ...
brew uninstall openssl;
brew uninstall openssl; (para garantir que nada foi deixado para trás)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
Crédito: @kensoh
Obrigado.

Isso está funcionando com Catalina 10.15.4

Como você está fazendo isso funcionar sem quebrar outras ferramentas instaladas no brew ??
Parece que só posso ter um ou quando tentei.
Ou reverter a versão do openssl, o pwsh funciona, mas o iperf3 quebra, por exemplo.

Valor do Nome
---- -----
PSVersion 7.0.1
PSEdition Core
GitCommitId 7.0.1
OS Darwin 19.4.0 Darwin Kernel Versão 19.4.0: Quarta, 4 de março, 22:28:40 PST 2020; root: xnu-6153.101.6 ~ 15 / RELEASE_X8…
Plataforma Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

Posso dizer que fazer o downgrade para uma versão mais antiga, obsoleta e, portanto, insegura do OpenSSL não é uma solução real.

A Apple já possui várias versões diferentes das bibliotecas OpenSSL instaladas no macOS.

Por que o PowerShell no macOS tem caminhos codificados para as bibliotecas, em vez de pesquisar o caminho da biblioteca do sistema.

Na pasta / usr / lib, temos meia dúzia de versões diferentes esperando para serem usadas.
/usr/lib/libssl.0.9.8.dylib
/usr/lib/libssl.dylib
/usr/lib/libssl.35.dylib
/usr/lib/libssl.0.9.7.dylib
/usr/lib/libssl.43.dylib
/usr/lib/libssl.46.dylib
/usr/lib/libssl.44.dylib

Posso dizer que fazer o downgrade para uma versão mais antiga, obsoleta e, portanto, insegura do OpenSSL não é uma solução real.

A Apple já possui várias versões diferentes das bibliotecas OpenSSL instaladas no macOS.

Por que o PowerShell no macOS tem caminhos codificados para as bibliotecas, em vez de pesquisar o caminho da biblioteca do sistema.

Na pasta / usr / lib, temos meia dúzia de versões diferentes esperando para serem usadas.
/usr/lib/libssl.0.9.8.dylib
/usr/lib/libssl.dylib
/usr/lib/libssl.35.dylib
/usr/lib/libssl.0.9.7.dylib
/usr/lib/libssl.43.dylib
/usr/lib/libssl.46.dylib
/usr/lib/libssl.44.dylib

Espero que você entenda que essas são versões mais antigas do OpenSSL. A nova versão é a v1.1.0 lançada em 25 de agosto de 2016 - a versão 0.9.8 foi lançada em 5 de julho de 2005. Acabei mudando para o Linux de qualquer maneira, pois não posso lidar com a implementação do OpenSSH em tantos servidores Windows e mantê-los, mas ainda estou ansioso para saber como o Kerberos terá suporte para o PSCore em versões futuras e se há alguma preocupação com ele no macOS.

@mikeyjoel Por favor, crie um novo problema e descreva os cenários de remoting que você deseja trabalhar.

@mikeyjoel Por favor, crie um novo problema e descreva os cenários de remoting que você deseja trabalhar.

Não há necessidade de criar um novo problema, pois um já foi criado: # 3708

No RHEL / Centos ou distribuição Debian / Ubuntu, você precisará dos seguintes pacotes:
estação de trabalho krb5
krb5-devel
gssntlmssp (requer epel-release para ser instalado com antecedência)
PowerShell

Que estão disponíveis por padrão para cada distribuição Linux. Estou trazendo isso à tona porque é muito comum você não gerenciar apenas o Office365, mas também servidores Windows em seu ambiente.

Posso dizer que fazer o downgrade para uma versão mais antiga, obsoleta e, portanto, insegura do OpenSSL não é uma solução real.
A Apple já possui várias versões diferentes das bibliotecas OpenSSL instaladas no macOS.
Por que o PowerShell no macOS tem caminhos codificados para as bibliotecas, em vez de pesquisar o caminho da biblioteca do sistema.
Na pasta / usr / lib, temos meia dúzia de versões diferentes esperando para serem usadas.
/usr/lib/libssl.0.9.8.dylib
/usr/lib/libssl.dylib
/usr/lib/libssl.35.dylib
/usr/lib/libssl.0.9.7.dylib
/usr/lib/libssl.43.dylib
/usr/lib/libssl.46.dylib
/usr/lib/libssl.44.dylib

Espero que você entenda que essas são versões mais antigas do OpenSSL. A nova versão é a v1.1.0 lançada em 25 de agosto de 2016 - a versão 0.9.8 foi lançada em 5 de julho de 2005. Acabei mudando para o Linux de qualquer maneira, pois não posso lidar com a implementação do OpenSSH em tantos servidores Windows e mantê-los, mas ainda estou ansioso para saber como o Kerberos terá suporte para o PSCore em versões futuras e se há alguma preocupação com ele no macOS.

Estou bem ciente de que essas são bibliotecas OpenSSL mais antigas - no entanto, como o pwsh atualmente só funciona com bibliotecas mais antigas, elas já estão instaladas no macOS.

Então, não tenho certeza de onde compartilhar isso, mas recentemente estou testando o OMI para tentar fazê-lo funcionar em uma versão mais recente do OpenSSL (1.1.0), bem como Kerberos auth (e esperançosamente NTLM também) em um Mac. Existem alguns bugs que corrigi em uma compilação local, mas é definitivamente possível fazê-lo funcionar e estou planejando criar uma postagem / guia no blog para ajudar as pessoas a fazer o mesmo para obter PSRemoting por meio de WinRM em seus computadores não Windows hospedeiros.

Eu queria saber o quão interessada a equipe do PowerShell está em tentar incorporar essas alterações em sua compilação compilada do OMI que eles incluem em sua versão. Estou planejando tentar mesclá-los no repo OMI, mas não estou otimista de que eles realmente conseguirão. A correção do OpenSSL também deve permitir que eles eliminem o requisito do OpenSSL 1.0.0 que documentaram em suas etapas de instalação pois parece que apenas as coisas do cliente PSRP exigiam essas bibliotecas.

Este parece ser o tópico mais longo que consegui encontrar sobre esse problema, então achei melhor postar aqui. Fico feliz em criar um novo problema para compilar os vários problemas e soluções / correções que encontrei para que possamos documentá-lo adequadamente para outras pessoas que queiram experimentá-lo.

Oi pessoal,

com relação à versão openssl, forcei o brew a usar a versão 1.02 e isso corrigiu meus problemas com o pwsh O365. Os comandos que executei são ...

brew uninstall openssl;
brew uninstall openssl; (para garantir que nada foi deixado para trás)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Crédito: @kensoh

Obrigado.

Encontrou uma solução alternativa fácil e temporária. Obrigado a @kensoh e @leeharrison por me apontar a direção certa:

1.) Verifique se uma versão antiga já não está instalada
ls -al /usr/local/Cellar/openssl*

2.) Instale a versão antiga (1.0.2t agora)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

3.) Mudar para a versão antiga
brew switch openssl 1.0.2t

4.) Fazer travessuras Powershell

5.) Volte para a nova versão do OpenSSL (1.1.1g no meu caso, verifique a Etapa 1. para encontrar sua versão e pasta da adega)
brew switch [email protected] 1.1.1g

Aproveite 😉

Por que isso está fechado, ainda é um problema. Eu estava tentando executar: Enter-AzWebAppContainerPSSession, mas recebi o erro WSMan e parece que este é um problema com o PowerShell no Mac que requer OpenSSL 1.0.0 enquanto eu tenho 1.1.1g instalado.

ATUALIZAÇÃO - parece que o WSMan está obsoleto e você o está deixando para trás, mas infelizmente não há cronograma disponível:
https://github.com/PowerShell/PowerShell/issues/10600#issuecomment -610565488

Então, não tenho certeza de onde compartilhar isso, mas recentemente estou testando o OMI para tentar fazê-lo funcionar em uma versão mais recente do OpenSSL (1.1.0), bem como Kerberos auth (e esperançosamente NTLM também) em um Mac. Existem alguns bugs que corrigi em uma compilação local, mas é definitivamente possível fazê-lo funcionar e estou planejando criar uma postagem / guia no blog para ajudar as pessoas a fazer o mesmo para obter PSRemoting por meio de WinRM em seus computadores não Windows hospedeiros.

Eu queria saber o quão interessada a equipe do PowerShell está em tentar incorporar essas alterações em sua compilação compilada do OMI que eles incluem em sua versão. Estou planejando tentar mesclá-los no repo OMI, mas não estou otimista de que eles realmente conseguirão. A correção do OpenSSL também deve permitir que eles eliminem o requisito do OpenSSL 1.0.0 que documentaram em suas etapas de instalação pois parece que apenas as coisas do cliente PSRP exigiam essas bibliotecas.

Este parece ser o tópico mais longo que consegui encontrar sobre esse problema, então achei melhor postar aqui. Fico feliz em criar um novo problema para compilar os vários problemas e soluções / correções que encontrei para que possamos documentá-lo adequadamente para outras pessoas que queiram experimentá-lo.

Ei @ jborean93, qual é a

@alaurie se você não estiver no macOS, está com sorte. O repo omi realmente fornece um pacote universal OpenSSL 1.0.0 e OpenSSL 1.1.0 em sua página de lançamentos . Só para deixar claro, este não é de forma alguma um guia oficial e apenas algo que eu mesmo dirijo. Siga estas instruções por sua própria conta e risco e certifique-se de fazer backup de todos os arquivos substituídos.

Basta baixar o pacote ssl_110.ulinux.x64.rpm e instalar ou extrair o RPM. Em seguida, você precisa copiar ou criar um link simbólico /opt/omi/lib/libmi.so para /opt/microsoft/powershell/7/libmi.so . A partir daí, você pode verificar se a biblioteca está vinculada a ldd

# Before (what's included with PowerShell)
jborean:~/dev/$ ldd /opt/microsoft/powershell/7/libmi.so
ldd: warning: you do not have execution permission for `/opt/microsoft/powershell/7/libmi.so'
        linux-vdso.so.1 (0x00007ffff6fa8000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc517d50000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fc517d49000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007fc517d37000)
        libssl.so.1.0.0 => /opt/microsoft/powershell/7/libssl.so.1.0.0 (0x00007fc517cc5000)
        libcrypto.so.1.0.0 => /opt/microsoft/powershell/7/libcrypto.so.1.0.0 (0x00007fc517a5a000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fc517890000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc517f6b000)
        libaudit.so.1 => /lib64/libaudit.so.1 (0x00007fc517862000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fc517848000)
        libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007fc517840000)

# After (once you symlink libmi.so)
jborean:~/dev/$ ldd /opt/microsoft/powershell/7/libmi.so
        linux-vdso.so.1 (0x00007fffcffec000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fee443ed000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fee443e6000)
        libpam.so.0 => /lib64/libpam.so.0 (0x00007fee443d4000)
        libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fee4433d000)
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fee44050000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fee43e86000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fee44707000)
        libaudit.so.1 => /lib64/libaudit.so.1 (0x00007fee43e58000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fee43e3e000)
        libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007fee43e36000)

Você pode ver que agora ele está vinculado a /lib64/libssl.so.1.1 e /lib64/libcrypto.so.1.1 . Não tenho nenhuma ideia de por que o pacote PowerShell ainda usa o pacote universal OpenSSL 1.0.0 quando o 1.1.0 está "oficialmente" disponível. Talvez tenha havido algum problema no passado, mas um teste básico funciona bem para mim. Ao dizer tudo isso, você provavelmente ainda encontrará alguns problemas com a libmi, como

  • Negotiate (Kerberos / NTLM) deve funcionar, mas descobri que só funciona em configurações muito específicas

    • Na verdade, mudei o código no meu próprio macOS para corrigir alguns dos problemas com a autenticação GSSAPI no código OMI

    • Embora você possa teoricamente construir o OMI sozinho com essas mudanças, isso envolve muito mais

    • Felizmente, o O365 / Exchange Online não usa a autenticação Negotiate, mas apenas a autenticação Básica, então isso não é um grande problema

  • OMI não oferece qualquer validação de certificado por HTTPS

    • Você precisa garantir que adicionou -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) ao criar sua PSSession se estiver disposto a correr esse risco

Para distros baseadas em Debian, o processo será semelhante, você só precisa ser libmi de .deb e não de .rpm . Também tenha em mente que os caminhos podem ser diferentes. Para aqueles que usam macOS, descobri que sempre é necessário criar o omi por conta própria, pois não há pacote oficial disponível. Meu próprio omi fork contém alterações no código que permitirão que você o crie em uma versão mais recente do macOS. Tenho até um pequeno guia sobre como fazer tudo isso para o macOS aqui .

@ jborean93 Você pode abrir um novo problema no

@iSazonov eles poderiam dar um passo adiante e realmente libmi da versão 1.1.0 OMI para que todo esse processo seja desnecessário para as distribuições Linux.

Estou relutante em tentar prosseguir com isso oficialmente porque o consenso comum é que WSMan em não-Windows é EOL. Ao tentar introduzir mudanças no OMI oficialmente para corrigir alguns problemas quando se tratava de construir no macOS ou problemas gerais de autenticação GSSAPI, recebi efetivamente um não, obrigado. Se alguém da equipe do PowerShell estiver disposto a investigar isso mais a fundo, estou feliz em compartilhar o trabalho que fiz para o macOS e em atualizar a versão libmi que vem junto com o PowerShell.

@ jborean93 Vejo que eles mudaram para OMI 1.6 https://github.com/PowerShell/MMI/blob/master/build.sh#L4 e espero que o MMI 2.0 suporte OpenSSL 1.1.0.
O pacote PSRP ainda está em OMI 1.5, mas o pacote nuget versão 1.4 https://github.com/PowerShell/psl-omi-provider/blob/master/omi.version - parece que o pacote OMI suporta 1.1.0, mas ainda está vinculado para OpenSSL 1.0.0 - sim? e devemos solicitar a atualização da MSFT para mais novos pacotes nuget vinculados ao OpenSSL 1.1.0 - sim?

(O primeiro OMI com suporte a OpenSSL 1.1.0 é 1.4.0-6 https://github.com/microsoft/omi/releases/tag/v1.4.0-6)

GitHub
Contribua com o desenvolvimento do PowerShell / MMI criando uma conta no GitHub.
GitHub
Biblioteca de suporte PSRP Linux. Contribua com o desenvolvimento do PowerShell / psl-omi-provider criando uma conta no GitHub.
GitHub
Open Management Infrastructure v1.4.0-6 Release Notes Problemas corrigidos nesta versão Vazamentos de memória foram eliminados. Novos recursos Executando a maior parte do OMI como um usuário não root. Por razões de segurança nós signifi ...

Está ficando tarde para mim, então vou dar uma olhada nisso amanhã. Porém, apenas algumas perguntas:

O MMI é realmente usado para o cliente WSMan nativo. AFAIK a dll nativa WSMan real é chamada através de libpsrpclient no Unix. Embora o MMI realmente use libmi por meio do OMI, parece que esse repo é usado para criar Microsoft.Management.Infrastructure.dll que é usado pelos vários componentes CIM. Talvez eles ainda estejam vinculados de alguma forma, mas parece que para Enter-PSSession ele chama um método em libpsrpclient que então chama vários métodos em libmi . Parece que para ter certeza de obter o binário mais recente para libmi, precisamos olhar o processo de construção e ver como a libmi é realmente coletada durante o processo de construção.

O psl-omi-provider AFAIK é o plugin do servidor e não está relacionado a nenhuma atividade baseada no cliente. Tenho certeza de que fazer isso funcionar seria bom, mas, honestamente, acho que o lado do cliente é a parte mais importante desta história.

precisamos examinar o processo de construção e ver como a libmi é realmente coletada durante o processo de construção.

@PaulHigin Você poderia explicar como obtemos libmi no PowerShell distributivo? Se vier do pacote PSPR, é possível atualizar o pacote para uma versão mais nova do OMI (para 1.5 ou 1.6)?

Não oferecemos mais suporte para WinRM / OMI. Eu acredito que parte do motivo é que o próprio OMI não está mais disponível. @ TravisEz13 pode fornecer mais informações.

Minha dúvida vem do fato de que já há inconsistência - o MMI foi movido para a nova versão há alguns meses, mas o PSPR não - e ambos fazem referência à libmi. Eu esperaria que a MSFT fizesse a _minor_ atualização do pacote PSPR e fechasse muitas perguntas sobre o problema.

@PaulHigin Você poderia explicar como conseguimos libmi na distribuição do PowerShell? Se vier do pacote PSPR, é possível atualizar o pacote para a versão mais recente do OMI (para 1.5 ou 1.6)?

Você teria que pedir isso à equipe OMI, e eles disseram que não farão alterações ou lançamentos para o PowerShell.

@ TravisEz13 Minha pergunta sobre a atualização da versão OMI em https://github.com/PowerShell/psl-omi-provider/blob/master/omi.version

GitHub
Biblioteca de suporte PSRP Linux. Contribua com o desenvolvimento do PowerShell / psl-omi-provider criando uma conta no GitHub.

@ TravisEz13, a equipe OMI não pode criar mais nenhuma

Toda essa configuração pode estar obsoleta, mas para mim está claro que ainda há um caso de uso para usar o WSMan. Por que não tentar fazer com que o PowerShell seja mais útil em plataformas não Windows.

Obviamente, você pode usar uma das versões mais recentes compatível com OpenSSL 1.1.xe descartar o requisito do OpenSSL 1.0.x, que está desatualizado e provavelmente inseguro.

@ jborean93 Este é o oposto de claro. OMI está fundamentalmente quebrado. Se mudarmos para 1.1, interromperemos as distros (segfault pwsh) que usam 1.0. É um não iniciante. O OMI se recusa a corrigir o problema fundamental de que eles não carregam as bibliotecas corretamente, causando segfaults.

Se mudarmos para 1.1, iremos quebrar (segfault pwsh) distros que usam 1.0

Então, use apenas libmi que é compilado com OpenSSL 1.1 para as distros que realmente vêm com OpenSSL 1.1? Ou melhor ainda, tenha o OpenSSL 1.1 construído como padrão e use apenas o OpenSSL 1.0 existente para aqueles que não têm o 1.1. Por que devemos impedir compilações de distro mais recentes que podem tirar proveito de libs mais recentes. Inferno, mesmo algumas das distros mais antigas que são suportadas pelo PowerShell oferecem ambas as versões do OpenSSL de alguma forma ou formulário.

O OMI se recusa a corrigir o problema fundamental de que eles não carregam as bibliotecas corretamente, causando segfaults.

Embora eu compreenda totalmente não querer assumir mais trabalho tecnicamente, nada o impede de fazer as correções sozinho e compilá-lo especificamente para PowerShell.

Além disso, as falhas do seg estão relacionadas a um problema conhecido não relacionado ao OpenSSL ou apenas um comentário de que tentar carregá-lo sem as libs necessárias irá falhar? Se for sobre as libs não estarem disponíveis, então você já tem esse problema em distros mais recentes que não vêm com o OpenSSL 1.0.x. Por que as distros mais novas devem ser prejudicadas da mesma forma que você está afirmando que as mais antigas são prejudicadas se o pacote for atualizado?

Para um consumidor do PowerShell, isso é muito frustrante ao ver que componentes cruciais da linguagem não estão disponíveis fora dos hosts Windows. Não ser capaz de usar o WSMan como um cliente me impede não apenas de gerenciar hosts Windows existentes de um host não Linux, mas, como o título deste problema afirma, ele me impede de usar o PowerShell para gerenciar serviços online como O365 ou Exchange Online. Ser forçado a executar o Windows apenas para gerenciar esses serviços realmente contraria o suporte de plataforma cruzada que o PowerShell normalmente oferece. Eu sei que está tudo obsoleto, mas sem uma alternativa em vigor, você continuará a fazer com que as pessoas tentem fazê-lo funcionar e ficarão frustradas por não funcionar. O que realmente me irrita é que pode realmente funcionar, mas há pouco ou nenhum desejo da equipe do PowerShell de realmente fazer isso acontecer. Parece que a equipe está satisfeita em manter as coisas no estado atual quebrado e oferecer banalidades para usar um transporte mais novo como o ssh, que não funcionará para essas situações.

Desculpe por ser franco, eu realmente aprecio o tempo e o esforço que você e a equipe fazem com essa linguagem. Esta será apenas minha última tentativa de tentar tornar a configuração pronta para uso mais utilizável para os usuários finais. Se o consenso ainda for negativo, continuarei a ter minhas próprias soluções alternativas que os outros estão livres para seguir, se assim o desejarem.

@ jborean93 Suas perguntas foram feitas e respondidas anteriormente neste tópico.

Eu preenchi https://github.com/MicrosoftDocs/PowerShell-Docs/issues/6491 para documentar que OMI ( libmi ) não é suportado pelo PowerShell.

Apenas um FYI para quem ainda está interessado em fazer o OMI funcionar no Linux / macOS. Acabei de abrir meu fork do repo OMI, que inclui uma ampla gama de correções para fazer as coisas funcionarem corretamente no PowerShell. Você é mais que bem-vindo para dar uma olhada e brincar com ele, se desejar. Eu também escrevi uma postagem no blog chamada Wacky WSMan no Linux para cobrir minha jornada na criação da bifurcação e os vários problemas que encontrei.

Lembre-se de que ele não é afiliado à Microsoft ou à equipe do PowerShell / OMI de forma alguma. As mudanças são minhas e não vêm sem garantia de garantias de suporte. Vou tentar o meu melhor para ajudar com qualquer problema aberto lá, se você ainda estiver tendo problemas com o fork.

Hoje foi a primeira vez que usei o PowerShell e já estou decepcionado.
Três anos sem conserto ...

PowerShell 7.0.3

Warning: [email protected] 1.1.1g is already installed and up-to-date
To reinstall 1.1.1g, run `brew reinstall [email protected]`
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

New-PSSession: Este conjunto de parâmetros requer WSMan e nenhuma biblioteca de cliente WSMan compatível foi encontrada. WSMan não está instalado ou não está disponível para este sistema.

Se você disser que uma dependência do PowerShell foi preterida, mas essa dependência é necessária para configurar o DKIM no Exchange 365, você está dizendo que o Exchange 365 foi preterido, incluindo todos esses documentos que usam o software quebrado:

https://docs.microsoft.com/en-us/microsoft-365/security/office-365-security/use-dkim-to-validate-outbound-email?view=o365-worldwide#SetUpDKIMO365

Preciso comprar um computador Windows apenas para obter algumas chaves DKIM no Exchange?

Três anos ainda são um bug e, em vez da Microsoft trazer uma solução e atualizar suas dependências, pessoas que não são da Microsoft precisam fornecer soluções alternativas.

Provas de incapacidade.

Esta página foi útil?
0 / 5 - 0 avaliações