Powershell: Не удается подключиться к Office 365 / Exchange Online с помощью PowerShell

Созданный на 28 нояб. 2017  ·  70Комментарии  ·  Источник: PowerShell/PowerShell

Я не могу подключиться к Office 365 / Exchange Online с помощью PowerShell.
По-видимому, другие могут использовать последнюю версию push, но у меня это не работает ни на macOS 10.12, ни на 10.13 с pwsh 6.0.0-rc

Я получаю сообщение об ошибке при создании New-PSSession. В зависимости от точного синтаксиса команды, которую я использую, либо указано New-PSSession: для этого набора параметров требуется WSMan, и поддержка клиентской библиотеки WSMan не обнаружена, либо PowerShell завершает работу с необработанным исключением и прерывает ловушку 6.

Действия по воспроизведению

Установите PowerShell 6.0.0-rc на macOS 10.12 или 10.13.
Используйте Get-Credential, чтобы получить учетные данные администратора Office 365, а затем используйте New-PSSession для создания нового сеанса.

[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> ~]$ 

Вы заметите из приглашения в последней строке выше, что оно вернуло меня в оболочку bash.

Ожидаемое поведение

Ожидается, что New-PSSession будет работать на macOS.

Фактическое поведение

В зависимости от точного синтаксиса команды New-PSSession либо возвращает сообщение об ошибке:
New-PSSession: для этого набора параметров требуется WSMan, и поддерживаемая клиентская библиотека WSMan не найдена.
Или New-PSSession имеет необработанное исключение, и PowerShell завершает работу с прерыванием 6.

Различия в синтаксисе связаны с ConnectionUri - похоже, есть ли в конце uri косая черта или нет. С косой чертой в конце я получаю сообщение об отсутствии WSMan. Без косой черты сеанс PowerShell прерывается.

С косой чертой в конце:

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

Без слеша в конце:

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

Данные окружающей среды

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

Самый полезный комментарий

Привет, ребята,

Что касается версии openssl, я заставил brew использовать версию 1.02, и это устранило мои проблемы с pwsh O365. Я выполнил следующие команды ...

brew удалить openssl;
brew удалить openssl; (чтобы ничего не осталось)
brew установить https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Кредит: @kensoh

Благодарю.

Все 70 Комментарий

Это работает для меня на 10.13.1. Можете ли вы подтвердить, что в $ PSHome у вас есть 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 у вас есть нужная библиотека с нужным размером файла и разрешениями. Определен ли DYLD_LIBRARY_PATH? Что будет на выходе $env:DYLD_LIBRARY_PATH ?

Это не определено.
`` PowerShell
PowerShell v6.0.0-RC
Авторское право (c) Корпорация Microsoft. Все права защищены.

https://aka.ms/pscore6-docs
Введите "help", чтобы получить помощь.

PS / Пользователи / kai> $ env: DYLD_LIBRARY_PATH
PS / Пользователи / kai>
`` ''

Что возвращает [System.Environment]::Is64BitProcess ?

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

@ kai-h попробуйте (в терминале перед запуском 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

Спасибо за вашу настойчивость. Однако я все еще получаю ту же ошибку.

[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> ~]$ 

Я хотел бы подтвердить, что могу успешно подключиться к Office 365 из PowerShell, размещенного на виртуальной машине Azure Ubuntu, используя те же данные, что и на 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)

Что я собираюсь сделать, чтобы устранить любые возможные проблемы, когда я настроил что-то на моем Mac, что противоречит этому, это настроить чистую установку macOS 10.12, а затем новую установку PowerShell 6.0.0-rc и протестировать если это сработает сегодня вечером.

Это дуп # 3606

Проблема №3606 - это своего рода дублирование, но они также увидели ошибку, которой я не видел при тестировании.

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

Мне удалось воспроизвести это при чистой установке macOS 10.12.6 и чистой установке PowerShell 6.0.0-rc. Все с настройками по умолчанию, новая учетная запись администратора создается при первой загрузке и никакие настройки для приложения 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$ 

Вот результаты чистой установки 10.12.6

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$ 

Это могло быть связано с проблемами, которые я видел, которые задокументированы на # 4029.
В его нынешнем виде PowerShell 6.0.0-rc требует использования библиотек OpenSSL, установленных Homebrew.

За помощью.

У меня была такая же проблема в докер-контейнере Debian 9. Прочитав комментарии выше, я увидел, что есть несколько битых библиотек ссылок, потому что системные библиотеки новее, чем ожидалось. Затем я сделал несколько символических ссылок, и все заработало.

корень @ 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)_

корень @ db70f6f67c51 : /opt/microsoft/powershell/6.0.1# cd / usr / lib / x86_64-linux-gnu /
корень @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ln -s libssl.so.1.0.2 libssl.so.1.0.0
корень @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ls -l libssl *

_-rw-r - r-- 1 root root 738444 2 ноя, 11:29 libssl.a
lrwxrwxrwx 1 root root 13 ноя 2 11:29 libssl.so -> libssl.so.1.1
lrwxrwxrwx 1 root root 15 21 февраля 17:27 libssl.so.1.0.0 -> libssl.so.1.0.2
-rw-r - r-- 1 корень root 431232 13 декабря 22:09 libssl.so.1.0.2
-rw-r - r-- 1 root root 442920 2 ноября 11:29 libssl.so.1.1_

корень @ db70f6f67c51 : / usr / lib / x86_64-linux-gnu # ln -s libcrypto.so.1.0.2 libcrypto.so.1.0.0
корень @ 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)_

У меня была аналогичная проблема, но для меня проблема была в параметре -AllowRedirection.

Если бы я попробовал в 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

Моя версия 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       

То же самое в Powershell в 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 "

Я получаю предупреждение о перенаправлении, но соединение установлено успешно.

Моя версия PS в 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

Теперь выполняем ту же команду в Linux, но с использованием перенаправленного URI, который мы получили в 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

Мне кажется, проблема в том, что параметр allowredirection не работает должным образом.

После установки последней версии PowerShell (v6.0.2) у меня больше не работает:

[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 Следует ли считать это нестабильным, плохим UX или плохо задокументированным?

Это что-то, что изменилось в последних версиях, так что базовая аутентификация не работает, или это нечто большее? Если потребуется, я буду рад провести еще несколько тестов.

В служебных обновлениях до 6.0.0 не было изменений, влияющих на это. Не уверен, были ли какие-либо изменения на стороне сервера. cc @dantraMSFT

В MacOS я действительно вижу регресс в 6.0.1 с постоянной ошибкой ERROR_WSMAN_INVALID_SELECTORS. Я не вижу проблем в 6.0.0 и 6.0.2, а libpsrpclient не менялся в этих выпусках. Машина еще не была обновлена ​​до High Sierra, так что это может внести свой вклад.

Мое тестирование проводилось на Mac, который недавно был обновлен с macOS 10.12 Sierra до 10.13 High Sierra. Я также обновил PowerShell с любой предыдущей версии (вероятно, 6.0.0 или 6.0.1) до последней версии 6.0.2. Я также обновил установку MacPorts до последней версии и обновил все свои порты. У меня есть символическая ссылка для PowerShell, откуда он ожидает найти библиотеки OpenSSL, установленные Homebrew, туда, где они установлены MacPorts, и все это работало до обновлений для подключения к Office 365

У меня установлен powershell 6.0.2. Я установил MacPorts, создал пакет OpenSSL и установил его. Когда я пытаюсь создать $ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI https://outlook.office365.com/powershell-liveid/ -Credential $ O365Cred -Authenticatin Basic -Allowredirection, я получаю ту же ошибку New -PSSession: для этого набора параметров требуется WSMan, а поддерживаемая клиентская библиотека WSMan не найдена.
$ Psversiontable

Имя Значение
---- -----
PS Версия 6.0.2
Ядро PSEdition
GitCommitId v6.0.2
OS Darwin 17.5.0 Darwin Kernel Version 17.5.0: 13 апреля, пятница, 19:32:32 PDT 2018; корень: x ...
Платформа Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolВерсия 2.3
Сериализация Версия 1.1.0.1
WSManStackVersion 3.0

Что мне нужно сделать, чтобы решить проблему WSMan?

Я новичок в O365 и PS на Mac. У меня такое же сообщение об ошибке. Буду признателен за любую помощь, которую я могу получить.

Имя Значение
---- -----
PS Версия 6.0.2
Ядро PSEdition
GitCommitId v6.0.2
OS Darwin 17.6.0 Darwin Kernel Version 17.6.0: Вт, 8 мая, 15:22:16 PDT 2018; корень: xnu-4570.61.1 ~ ...
Платформа Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolВерсия 2.3
Сериализация Версия 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: для этого набора параметров требуется WSMan, а поддерживаемая клиентская библиотека WSMan не найдена. WSMan либо не установлен, либо недоступен для этой системы.
В строке: 1 символ: 12

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

PS / Пользователи / AdityaBhasin>

Версия системы: macOS 10.13.5 (17F77)

У вас установлен OpenSSL с Homebrew? Или, если вы используете MacPorts (что я рекомендую), связали ли вы каталог библиотеки OpenSSL с тем местом, где, по мнению PowerShell, он должен быть?

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

ВОТ ЭТО ДА! Большое спасибо @ kai-h Я запустил команду для обновления открытого SSL с помощью Homebrew, и теперь, похоже, у меня это работает. Я сообщу здесь, если столкнусь с новой проблемой. Еще раз спасибо!

Установка PowerShell v6.0.4 на OSX 10.13.3 устранила проблему.

Ссылка для установки:
https://github.com/PowerShell/PowerShell/releases/download/v6.0.4/powershell-6.0.4-osx.10.12-x64.pkg

@ kai-h Вы можете подтвердить?

Повторное открытие этой проблемы: версия 6.1.0 в Mojave вызывает ту же проблему при попытке подключиться к Office 365.

Это тоже упрек для меня с Мохаве

У меня это работает с 6.0.4 на Mojave с библиотеками OpenSSL, установленными через MacPorts, а НЕ Homebrew.

`` `PowerShell
[ кай @ blackmac ~] $ pwsh
PowerShell v6.0.4
Авторское право (c) Корпорация Microsoft. Все права защищены.

https://aka.ms/pscore6-docs
Введите "help", чтобы получить помощь.

PS / Users / kai> $ PSVersionTable

Имя Значение
---- -----
PS Версия 6.0.4
Ядро PSEdition
GitCommitId v6.0.4
OS Darwin 18.0.0 Darwin Kernel Version 18.0.0: среда, 22 августа, 20:13:40 PDT 2018; корень: xnu-4903.201.2 ~ 1 / RELEASE_X86_64
Платформа Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolВерсия 2.3
Сериализация Версия 1.1.0.1
WSManStackVersion 3.0

PS / Пользователи / kai> office365.ps1

Запрос учетных данных PowerShell
Введите свои учетные данные.
Пользователь: [email protected]
Пароль для пользователя [email protected] : * *

ПРЕДУПРЕЖДЕНИЕ. Имена некоторых команд, импортированных из модуля tmp_nlc54neg.nu0, содержат неутвержденные глаголы, которые могут сделать их менее обнаруживаемыми. Чтобы найти команды с неутвержденными командами, снова запустите команду Import-Module с параметром Verbose. Чтобы получить список одобренных глаголов, введите Get-Verb. ModuleType Имя версии ExportedCommands ---------- ------- ---- ---------------- Script 1.0 tmp_nlc54neg.nu0 {Add-AvailabilityAddressSpace , Add-DistributionGroupMember, Add-MailboxFolderPermission, Add-MailboxLocation ...}

PS / Пользователи / kai>
`` ''

Это также работает для меня, когда я обновился до 6.1.0 в Mojave.
Повторюсь, я использую библиотеки OpenSSH из MacPorts и связал их с тем местом, где PowerShell ожидает их увидеть.
sudo ln -s /opt/local/lib /usr/local/opt/openssl/lib
Затем, когда я запускаю pwsh
`` `PowerShell
[ кай @ blackmac ~] $ pwsh
PowerShell 6.1.0
Авторское право (c) Корпорация Microsoft. Все права защищены.

https://aka.ms/pscore6-docs
Введите "help", чтобы получить помощь.

PS / Users / kai> $ PSVersionTable

Имя Значение
---- -----
PS Версия 6.1.0
Ядро PSEdition
GitCommitId 6.1.0
OS Darwin 18.0.0 Darwin Kernel Version 18.0.0: среда, 22 августа, 20:13:40 PDT 2018; корень: xnu-4903.201.2 ~ 1 / RELEASE_X86_64
Платформа Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0 ...}
PSRemotingProtocolВерсия 2.3
Сериализация Версия 1.1.0.1
WSManStackVersion 3.0

PS / Пользователи / kai> office365.ps1

Запрос учетных данных PowerShell
Введите свои учетные данные.
Пользователь: [email protected]
Пароль для пользователя [email protected] : * *

ВНИМАНИЕ: имена некоторых импортированных команд из модуля tmp_kllnlbam.5cg включают неутвержденные глаголы, которые могут сделать их менее обнаруживаемыми. Чтобы найти команды с неутвержденными командами, снова запустите команду Import-Module с параметром Verbose. Чтобы получить список одобренных глаголов, введите Get-Verb. ModuleType Имя версии ExportedCommands ---------- ------- ---- ---------------- Script 1.0 tmp_kllnlbam.5cg {Add-AvailabilityAddressSpace , Add-DistributionGroupMember, Add-MailboxFolderPermission, Add -...

PS / Пользователи / kai>

`` ''

У меня сработало использование версии OpenSSL для MacPorts.

Я воспроизводю это на Мохаве с Macports OpenSSL:
Mac OS Mojave 10.14.5
Powershell 6.2.3

инструменты xcode установлены. Я установил powershell с помощью 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

Я установил openssl, используя инструкции MS doc через MacPorts:

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

Я создал символическую ссылку:

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

Я перезапустил свой терминал и попробовал enter-pssession:

``
PS / Пользователи / travbrack> enter-pssession computername
enter-pssession: для этого набора параметров требуется WSMan, а поддерживаемая клиентская библиотека WSMan не найдена. WSMan либо не установлен, либо недоступен для этой системы.
В строке: 1 символ: 1

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

Будем очень благодарны любой помощи

Комментарий от # 10600

У меня была такая же проблема, мне удалось ее решить, связав старую версию openssl из brew с переключателем brew openssl 1.0.2s

Для меня переход на openssl 1.0.2r тоже сработал. У меня по умолчанию был установлен openssl 1.1 через brew, но они не работали

Привет, ребята,

Что касается версии openssl, я заставил brew использовать версию 1.02, и это устранило мои проблемы с pwsh O365. Я выполнил следующие команды ...

brew удалить openssl;
brew удалить openssl; (чтобы ничего не осталось)
brew установить https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Кредит: @kensoh

Благодарю.

@leeharrison, который работал у меня при запуске mojave с pwsh 6.0.4. Я испробовал все предыдущие предложения, и больше ничего не помогло.

спасибо @leeharrison. У меня также была эта проблема на High Sierra с pwsh 6.0.4, и ваше предложение тоже исправлено для меня.

Можем ли мы убедиться, что PowerShell в macOS не имеет жесткой зависимости от более старой и небезопасной версии библиотек OpenSSL? Также является плохой практикой явно требовать, чтобы библиотека была установлена ​​Homebrew с жестко заданным путем.

Привет, ребята,

Что касается версии openssl, я заставил brew использовать версию 1.02, и это устранило мои проблемы с pwsh O365. Я выполнил следующие команды ...

brew удалить openssl;
brew удалить openssl; (чтобы ничего не осталось)
brew установить https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Кредит: @kensoh

Благодарю.

Это определенно хорошо работает! Спасибо.

Привет, ребята,

Что касается версии openssl, я заставил brew использовать версию 1.02, и это устранило мои проблемы с pwsh O365. Я выполнил следующие команды ...

brew удалить openssl;
brew удалить openssl; (чтобы ничего не осталось)
brew установить https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Кредит: @kensoh

Благодарю.

Это работает с Catalina 10.15.4

Привет, ребята,
Что касается версии openssl, я заставил brew использовать версию 1.02, и это устранило мои проблемы с pwsh O365. Я выполнил следующие команды ...
brew удалить openssl;
brew удалить openssl; (чтобы ничего не осталось)
brew установить https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
Кредит: @kensoh
Благодарю.

Это работает с Catalina 10.15.4

Как заставить это работать, не нарушая другие установленные инструменты brew ??
Кажется, я могу получить либо то, либо другое, когда попробовал.
Либо откатить версию openssl, pwsh работает, но iperf3 ломается, например.

Имя Значение
---- -----
PS Версия 7.0.1
Ядро PSEdition
GitCommitId 7.0.1
OS Darwin 19.4.0 Darwin Kernel Version 19.4.0: среда, 4 марта, 22:28:40 PST 2020; корень: xnu-6153.101.6 ~ 15 / RELEASE_X8…
Платформа Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolВерсия 2.3
Сериализация Версия 1.1.0.1
WSManStackVersion 3.0

Могу я просто рассказать об этом, что переход на более старую, устаревшую и, следовательно, небезопасную версию OpenSSL не является реальным решением.

У Apple уже есть куча разных версий библиотек OpenSSL, установленных на macOS.

Почему PowerShell в macOS имеет жестко заданные пути к библиотекам вместо поиска по пути к системной библиотеке.

В папке / usr / lib у нас есть полдюжины различных версий, которые ждут, чтобы их использовали.
/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

Могу я просто рассказать об этом, что переход на более старую, устаревшую и, следовательно, небезопасную версию OpenSSL не является реальным решением.

У Apple уже есть куча разных версий библиотек OpenSSL, установленных на macOS.

Почему PowerShell в macOS имеет жестко заданные пути к библиотекам вместо поиска по пути к системной библиотеке.

В папке / usr / lib у нас есть полдюжины различных версий, которые ждут, чтобы их использовали.
/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

Надеюсь, вы понимаете, что это более старые версии OpenSSL. Новый выпуск v1.1.0 выпущен 25 августа 2016 г. - Версия 0.9.8 была выпущена 5 июля 2005 г. Я все равно перешел на Linux, так как не могу заниматься реализацией OpenSSH на столь многих серверах Windows и поддерживать их, но все еще с нетерпением жду, как Kerberos будет поддерживаться для PSCore в будущих выпусках, и будут ли какие-либо меры для этого в macOS.

@mikeyjoel Создайте новую проблему и опишите сценарии удаленного взаимодействия, с которыми вы хотите работать.

@mikeyjoel Создайте новую проблему и опишите сценарии удаленного взаимодействия, с которыми вы хотите работать.

Мне не нужно создавать новую задачу, поскольку проблема уже была создана: # 3708

В дистрибутивах RHEL / Centos или Debian / Ubuntu вам понадобятся следующие пакеты:
krb5-рабочая станция
krb5-devel
gssntlmssp (требуется предварительная установка epel-release)
Powershell

Которые доступны по умолчанию для каждого дистрибутива Linux. Я говорю об этом, потому что очень часто вы будете управлять не только Office365, но и серверами Windows в своей среде.

Могу я просто рассказать об этом, что переход на более старую, устаревшую и, следовательно, небезопасную версию OpenSSL не является реальным решением.
У Apple уже есть куча разных версий библиотек OpenSSL, установленных на macOS.
Почему PowerShell в macOS имеет жестко заданные пути к библиотекам вместо поиска по пути к системной библиотеке.
В папке / usr / lib у нас есть полдюжины различных версий, которые ждут, чтобы их использовали.
/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

Надеюсь, вы понимаете, что это более старые версии OpenSSL. Новый выпуск v1.1.0 выпущен 25 августа 2016 г. - Версия 0.9.8 была выпущена 5 июля 2005 г. Я все равно перешел на Linux, так как не могу заниматься реализацией OpenSSH на столь многих серверах Windows и поддерживать их, но все еще с нетерпением жду, как Kerberos будет поддерживаться для PSCore в будущих выпусках, и будут ли какие-либо меры для этого в macOS.

Мне хорошо известно, что это старые библиотеки OpenSSL, однако, поскольку pwsh в настоящее время работает только со старыми библиотеками, они уже установлены в macOS.

Так что я не уверен, где поделиться этим, но я недавно играл с OMI, чтобы попытаться заставить его работать с более новой версией OpenSSL (1.1.0), а также с аутентификацией Kerberos (и, надеюсь, NTLM) на Mac. Есть несколько ошибок, которые я исправил в локальной сборке, но определенно возможно заставить ее работать, и я планирую создать сообщение в блоге / руководство, чтобы помочь людям сделать то же самое, чтобы получить PSRemoting через WinRM на их не-Windows хосты.

Мне было интересно, насколько заинтересована команда PowerShell в попытке включить эти изменения в свою скомпилированную сборку OMI, которую они включают в свой выпуск. Я планирую попытаться объединить их в репозиторий OMI, но я не оптимистичен, что они действительно это сделают. Исправление OpenSSL также должно позволить им отказаться от требований OpenSSL 1.0.0, которые они задокументировали на этапах установки. поскольку похоже, что эти библиотеки требовались только клиентскому материалу PSRP.

Это была самая длинная тема, которую я смог найти по этой проблеме, поэтому я подумал, что лучше опубликовать ее здесь. Рад создать новую проблему для компиляции различных проблем и обходных путей / исправлений, которые я нашел, чтобы мы могли должным образом задокументировать ее для других, желающих попробовать.

Привет, ребята,

Что касается версии openssl, я заставил brew использовать версию 1.02, и это устранило мои проблемы с pwsh O365. Я выполнил следующие команды ...

brew удалить openssl;
brew удалить openssl; (чтобы ничего не осталось)
brew установить https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Кредит: @kensoh

Благодарю.

Нашел простой и временный обходной путь. Спасибо @kensoh и @leeharrison за то, что указали мне правильное направление:

1.) Проверьте, не установлена ​​ли еще старая версия
ls -al /usr/local/Cellar/openssl*

2.) Установить старую версию (1.0.2t прямо сейчас)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

3.) Перейти на старую версию
brew switch openssl 1.0.2t

4.) Проделайте махинации с Powershell

5.) Вернитесь к новой версии OpenSSL (в моем случае 1.1.1g, проверьте Шаг 1., чтобы найти свою версию и папку Cellar)
brew switch [email protected] 1.1.1g

Наслаждайтесь 😉

Почему это закрыто, это все еще проблема. Я пытался выполнить: Enter-AzWebAppContainerPSSession, но получил ошибку WSMan, и, похоже, это проблема с PowerShell на Mac, требующей OpenSSL 1.0.0, а у меня установлен 1.1.1g.

ОБНОВЛЕНИЕ - похоже, что WSMan устарел, и вы оставляете его позади, но, к сожалению, график недоступен:
https://github.com/PowerShell/PowerShell/issues/10600#issuecomment -610565488

Так что я не уверен, где поделиться этим, но я недавно играл с OMI, чтобы попытаться заставить его работать с более новой версией OpenSSL (1.1.0), а также с аутентификацией Kerberos (и, надеюсь, NTLM) на Mac. Есть несколько ошибок, которые я исправил в локальной сборке, но определенно возможно заставить ее работать, и я планирую создать сообщение в блоге / руководство, чтобы помочь людям сделать то же самое, чтобы получить PSRemoting через WinRM на их не-Windows хосты.

Мне было интересно, насколько заинтересована команда PowerShell в попытке включить эти изменения в свою скомпилированную сборку OMI, которую они включают в свой выпуск. Я планирую попытаться объединить их в репозиторий OMI, но я не оптимистичен, что они действительно это сделают. Исправление OpenSSL также должно позволить им отказаться от требований OpenSSL 1.0.0, которые они задокументировали на этапах установки. поскольку похоже, что эти библиотеки требовались только клиентскому материалу PSRP.

Это была самая длинная тема, которую я смог найти по этой проблеме, поэтому я подумал, что лучше опубликовать ее здесь. Рад создать новую проблему для компиляции различных проблем и обходных путей / исправлений, которые я нашел, чтобы мы могли должным образом задокументировать ее для других, желающих попробовать.

Привет, @ jborean93, что за работа. Я использую Fedora 32, и это меня бесит из-за требования OpenSSL 1.0.0.

@alaurie, если у вас нет macOS, вам повезло. Репозиторий omi самом деле предоставляет универсальный пакет OpenSSL 1.0.0 и OpenSSL 1.1.0 на странице своих

Просто загрузите пакет ssl_110.ulinux.x64.rpm и установите или извлеките RPM. Затем вам нужно скопировать или символическую ссылку /opt/omi/lib/libmi.so на /opt/microsoft/powershell/7/libmi.so . Оттуда вы можете проверить, что библиотека связана с 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)

Вы можете видеть, что теперь он связан с /lib64/libssl.so.1.1 и /lib64/libcrypto.so.1.1 . Я не понимаю, почему пакет PowerShell все еще использует универсальный пакет OpenSSL 1.0.0, когда 1.1.0 "официально" доступна. Возможно, в прошлом была какая-то проблема, но базовый тест мне подходит. Говоря все это, вы все равно, вероятно, столкнетесь с некоторыми проблемами с libmi, такими как

  • Согласование (Kerberos / NTLM) должно работать, но я обнаружил, что это работает только в очень специфических настройках.

    • Я фактически изменил код в своей собственной сборке macOS, чтобы исправить некоторые проблемы с аутентификацией GSSAPI в коде OMI.

    • Хотя теоретически вы можете самостоятельно создать OMI с этими изменениями, которые требуют гораздо большего

    • К счастью, O365 / Exchange Online не используют аутентификацию с согласованием, а только базовую аутентификацию, так что это не серьезная проблема.

  • OMI не предлагает проверку сертификатов по HTTPS.

    • Вам необходимо убедиться, что вы добавили -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) при создании сеанса PSSession, если вы готовы пойти на такой риск.

Для дистрибутивов на основе Debian процесс будет аналогичным, вам просто нужно быть libmi из .deb а не .rpm . Также учтите, что пути могут быть разными. Для тех из вас, кто пользуется macOS, я обнаружил, что вам всегда нужно собирать omi самостоятельно, поскольку официального пакета нет. Моя собственная вилка omi содержит изменения в коде, которые позволят вам собрать ее на более новой версии macOS. У меня даже есть небольшое руководство о том , чтобы сделать все , что для MacOS здесь .

@ jborean93 Вы можете открыть новую проблему в

@iSazonov они могли бы пойти еще дальше и фактически связать libmi из версии 1.1.0 OMI, так что весь этот процесс не нужен для дистрибутивов Linux.

Я неохотно пытаюсь продолжить это официально, потому что все согласны с тем, что WSMan на платформах, отличных от Windows, является EOL. При попытке официально внести изменения в OMI, чтобы исправить некоторые проблемы, связанные с использованием macOS или общими проблемами аутентификации GSSAPI, мне фактически не сказали «спасибо». Если кто-то из команды PowerShell захочет изучить это подробнее, я буду рад поделиться работой, проделанной мной для macOS, и изучить возможность обновления версии libmi, которая поставляется вместе с PowerShell.

@ jborean93 Я вижу, что они перешли на OMI 1.6 https://github.com/PowerShell/MMI/blob/master/build.sh#L4, и я ожидаю, что MMI 2.0 поддерживает OpenSSL 1.1.0.
Пакет PSRP все еще находится на OMI 1.5, но версия пакета nuget 1.4 https://github.com/PowerShell/psl-omi-provider/blob/master/omi.version - похоже, пакет OMI поддерживает 1.1.0, но он все еще связан на OpenSSL 1.0.0 - да? и мы должны попросить MSFT обновить до более нового пакета nuget, связанного с OpenSSL 1.1.0 - да?

(Первый OMI с поддержкой OpenSSL 1.1.0 - 1.4.0-6 https://github.com/microsoft/omi/releases/tag/v1.4.0-6)

GitHub
Участвуйте в разработке PowerShell / MMI, создав учетную запись на GitHub.
GitHub
Библиотека поддержки PSRP Linux. Участвуйте в разработке PowerShell / psl-omi-provider, создав учетную запись на GitHub.
GitHub
Примечания к выпуску Open Management Infrastructure v1.4.0-6 Проблемы, исправленные в этом выпуске, устранены утечки памяти. Новые возможности Запуск большей части OMI от имени пользователя без полномочий root. В целях безопасности мы ...

Для меня уже поздно, так что завтра я еще раз посмотрю. Но всего несколько вопросов:

Действительно ли MMI используется для собственного клиента WSMan. AFAIK фактическая собственная DLL WSMan вызывается через libpsrpclient в Unix. Хотя MMI действительно использует libmi через OMI, похоже, что это репо используется для создания Microsoft.Management.Infrastructure.dll который используется различными компонентами CIM. Возможно, они все еще каким-то образом связаны, но похоже, что для Enter-PSSession он вызывает метод в libpsrpclient который затем вызывает различные методы в libmi . Похоже, чтобы убедиться, что мы получили новый двоичный файл для libmi, нам нужно взглянуть на процесс сборки и посмотреть, как libmi фактически собирается во время процесса сборки.

PSL-omi-provider AFAIK - это серверный плагин, не имеющий отношения к какой-либо клиентской деятельности. Я уверен, что получить такую ​​работу было бы неплохо, но, честно говоря, я думаю, что клиентская сторона - самая важная часть этой истории.

нам нужно посмотреть на процесс сборки и посмотреть, как libmi фактически собирается в процессе сборки.

@PaulHigin Не могли бы вы объяснить, как мы получаем libmi в дистрибутиве PowerShell? Если он исходит из пакета PSPR, можно ли обновить пакет до более новой версии OMI (до 1.5 или 1.6)?

Мы больше не поддерживаем WinRM / OMI. Я считаю, что отчасти причина в том, что сам OMI больше не поддерживает. @ TravisEz13 может предоставить дополнительную информацию.

Мой вопрос связан с тем фактом, что уже существует несоответствие - MMI был переведен на новую версию несколько месяцев назад, а PSPR - нет - и оба ссылаются на libmi. Я ожидаю, что MSFT сделает _minor_ обновление пакета PSPR и закроет многие вопросы по этой проблеме.

@PaulHigin Не могли бы вы объяснить, как мы получаем libmi в дистрибутиве PowerShell? Если он исходит из пакета PSPR, возможно ли обновить пакет до более новой версии OMI (до 1.5 или 1.6)?

Вам нужно будет спросить об этом команду OMI, и они сказали, что не будут вносить изменения или выпускать PowerShell.

@ TravisEz13 Мой вопрос об обновлении версии OMI на https://github.com/PowerShell/psl-omi-provider/blob/master/omi.version

GitHub
Библиотека поддержки PSRP Linux. Участвуйте в разработке PowerShell / psl-omi-provider, создав учетную запись на GitHub.

@ TravisEz13 команда OMI может не создавать для вас больше выпусков, кроме того, что мешает вам самостоятельно использовать один из существующих выпусков. Похоже, что вы сейчас делаете это для MMI, так почему клиент WSMan отличается. Очевидно, что вы можете использовать одну из более новых версий, совместимых с OpenSSL 1.1.x, и отказаться от требований OpenSSL 1.0.x, которые устарели и, вероятно, небезопасны.

Возможно, вся эта установка устарела, но мне ясно, что все еще есть вариант использования WSMan. Почему бы не попробовать сделать PowerShell более полезным на платформах, отличных от Windows.

Очевидно, что вы можете использовать одну из более новых версий, совместимых с OpenSSL 1.1.x, и отказаться от требований OpenSSL 1.0.x, которые устарели и, вероятно, небезопасны.

@ jborean93 Это противоположность clear. ИМО фундаментально нарушен. Если мы перейдем к 1.1, мы сломаем (segfault pwsh) дистрибутивы, которые используют 1.0. Это не стартер. OMI отказывается исправлять фундаментальную проблему, заключающуюся в неправильной загрузке библиотек, что приводит к сбою в работе.

Если мы перейдем к 1.1, мы сломаем (segfault pwsh) дистрибутивы, которые используют 1.0

Так что используйте только libmi, скомпилированную с OpenSSL 1.1, для дистрибутивов, которые на самом деле поставляются с OpenSSL 1.1? Или еще лучше, сделайте OpenSSL 1.1 сборкой по умолчанию и просто используйте существующий OpenSSL 1.0 для тех, у которых нет 1.1. Почему мы должны препятствовать созданию новых дистрибутивов, которые могут использовать преимущества новых библиотек. Черт возьми, даже некоторые из более старых дистрибутивов, которые поддерживаются PowerShell, предлагают обе версии OpenSSL в той или иной форме.

OMI отказывается исправлять фундаментальную проблему, заключающуюся в неправильной загрузке библиотек, что приводит к сбою в работе.

Хотя я полностью понимаю, что технически не хочу брать на себя больше работы, ничто не мешает вам внести исправления самостоятельно и скомпилировать их специально для PowerShell.

Кроме того, ошибки seg связаны с известной проблемой, не связанной с OpenSSL, или просто с комментарием, который пытается загрузить его без необходимых библиотек? Если дело в том, что библиотеки недоступны, то у вас уже есть эта проблема в новых дистрибутивах, которые не поставляются с OpenSSL 1.0.x. Почему новые дистрибутивы должны тормозиться так же, как вы заявляете, что старые дистрибутивы тормозятся при обновлении пакета?

Для потребителя PowerShell очень неприятно видеть, что важнейшие компоненты языка недоступны за пределами хостов Windows. Отсутствие возможности использовать WSMan в качестве клиента не позволяет мне не только управлять существующими хостами Windows с хоста, отличного от Linux, но, как указано в заголовке этой проблемы, я не могу использовать PowerShell для управления онлайн-сервисами, такими как O365 или Exchange Online. Вынужденный запуск Windows только для управления этими службами действительно противоречит кроссплатформенной поддержке, которую обычно предлагает PowerShell. Я знаю, что все это устарело, но без альтернативы вы по-прежнему будете заставлять людей пытаться заставить его работать и расстраиваться, что это не так. Что меня действительно раздражает, так это то, что это действительно может работать, но команда PowerShell практически не желает этого делать. Похоже, что команда довольна тем, что сохраняет текущее неисправное состояние и предлагает банальность использовать новый транспорт, такой как ssh, который не будет работать в таких ситуациях.

Извините за резкость, я действительно ценю время и усилия, которые вы и ваша команда вкладываете в этот язык. Это просто моя последняя попытка сделать нестандартную настройку более удобной для конечных пользователей. Если консенсуса по-прежнему нет, я продолжу использовать свои собственные обходные пути, которым другие могут следовать, если пожелают.

@ jborean93 Ваши вопросы уже задавались, и ответьте на них в этой теме.

Я подал https://github.com/MicrosoftDocs/PowerShell-Docs/issues/6491, чтобы документально подтвердить, что OMI ( libmi ) не поддерживается PowerShell.

Просто к сведению всех, кто все еще заинтересован в том, чтобы OMI работал в Linux / macOS. Я только что открыл свою вилку репозитория OMI, который включает в себя широкий спектр исправлений для правильной работы в PowerShell. Приглашаем вас посмотреть и поиграть с ним, если хотите. Я также написал сообщение в блоге под названием Wacky WSMan on Linux, в котором

Помните, что это никоим образом не связано с Microsoft или командой PowerShell / OMI. Изменения являются моими собственными и не сопровождаются гарантиями поддержки. Я постараюсь изо всех сил помочь с любыми открытыми там проблемами, если у вас все еще есть проблемы с вилкой.

Сегодня я впервые использовал PowerShell и уже разочарован.
Три года и никакого исправления ...

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: для этого набора параметров требуется WSMan, а поддерживаемая клиентская библиотека WSMan не найдена. WSMan либо не установлен, либо недоступен для этой системы.

Если вы говорите, что зависимость PowerShell устарела, но эта зависимость требуется для настройки DKIM в Exchange 365, вы говорите, что Exchange 365 устарел, включая все эти документы, в которых используется неисправное программное обеспечение:

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

Нужно ли мне покупать компьютер с Windows только для того, чтобы получить ключи DKIM в Exchange?

Три года все еще остаются ошибкой, и вместо того, чтобы Microsoft предлагала решение и обновляла свои зависимости, люди, не являющиеся Microsoft, должны предоставлять вилки и обходные пути.

Доказательства недееспособности.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги