PowerShell 6 ApartmentState

Я видел здесь несколько вопросов, но не получил ответа. У меня есть файл класса, который отображает окно выполнения сценария, и он отлично работает в PowerShell версии 5.1.15063.966, но не работает в PWSH версии 6.0.2.

Я не уверен, актуально ли это, но поскольку я использую это в классе, мне пришлось предварительно загрузить PresentationFramework, а затем (точка) источник включить мой файл класса.

Тестирование (V5):

Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Users\fake> [void][System.Reflection.Assembly]::LoadWithPartialName('PresentationFramework');
PS C:\Users\fake> $newRunspace = [RunspaceFactory]::CreateRunspace();
PS C:\Users\fake> $newRunspace.ThreadOptions  = "ReuseThread";
PS C:\Users\fake> $newRunspace.ApartmentState = "STA";
PS C:\Users\fake>

Тестирование (V6):

PowerShell v6.0.2
Copyright (c) Microsoft Corporation. All rights reserved.

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

PS C:\Temp\PS\PowerShell-6.0.2-win-x64> [void][System.Reflection.Assembly]::LoadWithPartialName('PresentationFramework');
PS C:\Temp\PS\PowerShell-6.0.2-win-x64> $newRunspace = [RunspaceFactory]::CreateRunspace();
PS C:\Temp\PS\PowerShell-6.0.2-win-x64> $newRunspace.ThreadOptions  = "ReuseThread";
PS C:\Temp\PS\PowerShell-6.0.2-win-x64> $newRunspace.ApartmentState = "STA";
The property 'ApartmentState' cannot be found on this object. Verify that the property exists and can be set.
At line:1 char:1
+ $newRunspace.ApartmentState = "STA";
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException

PS C:\Temp\PS\PowerShell-6.0.2-win-x64>

Я сделал GM в обеих версиях, и они действительно разные:

V5:

PS C:\Users\Fake> $newRunspace = [RunspaceFactory]::CreateRunspace();
PS C:\Users\Fake> $newRunSpace | gm


   TypeName: System.Management.Automation.Runspaces.LocalRunspace

Name                         MemberType Definition
----                         ---------- ----------
AvailabilityChanged          Event      System.EventHandler`1[System.Management.Automation.Runspaces.RunspaceAvailab...
StateChanged                 Event      System.EventHandler`1[System.Management.Automation.Runspaces.RunspaceStateEv...
ClearBaseTransaction         Method     void ClearBaseTransaction()
Close                        Method     void Close()
CloseAsync                   Method     void CloseAsync()
Connect                      Method     void Connect()
ConnectAsync                 Method     void ConnectAsync()
CreateDisconnectedPipeline   Method     System.Management.Automation.Runspaces.Pipeline CreateDisconnectedPipeline()
CreateDisconnectedPowerShell Method     powershell CreateDisconnectedPowerShell()
CreateNestedPipeline         Method     System.Management.Automation.Runspaces.Pipeline CreateNestedPipeline(), Syst...
CreatePipeline               Method     System.Management.Automation.Runspaces.Pipeline CreatePipeline(), System.Man...
Disconnect                   Method     void Disconnect()
DisconnectAsync              Method     void DisconnectAsync()
Dispose                      Method     void Dispose(), void IDisposable.Dispose()
Equals                       Method     bool Equals(System.Object obj)
GetApplicationPrivateData    Method     psprimitivedictionary GetApplicationPrivateData()
GetCapabilities              Method     System.Management.Automation.Runspaces.RunspaceCapability GetCapabilities()
GetHashCode                  Method     int GetHashCode()
GetType                      Method     type GetType()
Open                         Method     void Open()
OpenAsync                    Method     void OpenAsync()
ResetRunspaceState           Method     void ResetRunspaceState()
SetBaseTransaction           Method     void SetBaseTransaction(System.Transactions.CommittableTransaction transacti...
ToString                     Method     string ToString()
ApartmentState               Property   System.Threading.ApartmentState ApartmentState {get;set;}
ConnectionInfo               Property   System.Management.Automation.Runspaces.RunspaceConnectionInfo ConnectionInfo...
Debugger                     Property   System.Management.Automation.Debugger Debugger {get;}
DisconnectedOn               Property   System.Nullable[datetime] DisconnectedOn {get;}
Events                       Property   System.Management.Automation.PSEventManager Events {get;}
ExpiresOn                    Property   System.Nullable[datetime] ExpiresOn {get;}
Id                           Property   int Id {get;}
InitialSessionState          Property   initialsessionstate InitialSessionState {get;}
InstanceId                   Property   guid InstanceId {get;}
JobManager                   Property   System.Management.Automation.JobManager JobManager {get;}
LanguageMode                 Property   System.Management.Automation.PSLanguageMode LanguageMode {get;set;}
Name                         Property   string Name {get;set;}
OriginalConnectionInfo       Property   System.Management.Automation.Runspaces.RunspaceConnectionInfo OriginalConnec...
RunspaceAvailability         Property   System.Management.Automation.Runspaces.RunspaceAvailability RunspaceAvailabi...
RunspaceConfiguration        Property   System.Management.Automation.Runspaces.RunspaceConfiguration RunspaceConfigu...
RunspaceIsRemote             Property   bool RunspaceIsRemote {get;}
RunspaceStateInfo            Property   System.Management.Automation.Runspaces.RunspaceStateInfo RunspaceStateInfo {...
SessionStateProxy            Property   System.Management.Automation.Runspaces.SessionStateProxy SessionStateProxy {...
ThreadOptions                Property   System.Management.Automation.Runspaces.PSThreadOptions ThreadOptions {get;set;}
Version                      Property   version Version {get;}

V6:

PS C:\Temp\PS\PowerShell-6.0.2-win-x64> $newRunspace = [RunspaceFactory]::CreateRunspace();
PS C:\Temp\PS\PowerShell-6.0.2-win-x64> $newRunSpace | gm


   TypeName: System.Management.Automation.Runspaces.LocalRunspace

Name                         MemberType Definition
----                         ---------- ----------
AvailabilityChanged          Event      System.EventHandler`1[System.Management.Automation.Runspaces.RunspaceAvailab...
StateChanged                 Event      System.EventHandler`1[System.Management.Automation.Runspaces.RunspaceStateEv...
Close                        Method     void Close()
CloseAsync                   Method     void CloseAsync()
Connect                      Method     void Connect()
ConnectAsync                 Method     void ConnectAsync()
CreateDisconnectedPipeline   Method     System.Management.Automation.Runspaces.Pipeline CreateDisconnectedPipeline()
CreateDisconnectedPowerShell Method     powershell CreateDisconnectedPowerShell()
CreateNestedPipeline         Method     System.Management.Automation.Runspaces.Pipeline CreateNestedPipeline(), Syst...
CreatePipeline               Method     System.Management.Automation.Runspaces.Pipeline CreatePipeline(), System.Man...
Disconnect                   Method     void Disconnect()
DisconnectAsync              Method     void DisconnectAsync()
Dispose                      Method     void Dispose(), void IDisposable.Dispose()
Equals                       Method     bool Equals(System.Object obj)
GetApplicationPrivateData    Method     psprimitivedictionary GetApplicationPrivateData()
GetCapabilities              Method     System.Management.Automation.Runspaces.RunspaceCapability GetCapabilities()
GetHashCode                  Method     int GetHashCode()
GetType                      Method     type GetType()
Open                         Method     void Open()
OpenAsync                    Method     void OpenAsync()
ResetRunspaceState           Method     void ResetRunspaceState()
ToString                     Method     string ToString()
ConnectionInfo               Property   System.Management.Automation.Runspaces.RunspaceConnectionInfo ConnectionInfo...
Debugger                     Property   System.Management.Automation.Debugger Debugger {get;}
DisconnectedOn               Property   System.Nullable[datetime] DisconnectedOn {get;}
Events                       Property   System.Management.Automation.PSEventManager Events {get;}
ExpiresOn                    Property   System.Nullable[datetime] ExpiresOn {get;}
Id                           Property   int Id {get;}
InitialSessionState          Property   initialsessionstate InitialSessionState {get;}
InstanceId                   Property   guid InstanceId {get;}
JobManager                   Property   System.Management.Automation.JobManager JobManager {get;}
LanguageMode                 Property   System.Management.Automation.PSLanguageMode LanguageMode {get;set;}
Name                         Property   string Name {get;set;}
OriginalConnectionInfo       Property   System.Management.Automation.Runspaces.RunspaceConnectionInfo OriginalConnec...
RunspaceAvailability         Property   System.Management.Automation.Runspaces.RunspaceAvailability RunspaceAvailabi...
RunspaceIsRemote             Property   bool RunspaceIsRemote {get;}
RunspaceStateInfo            Property   System.Management.Automation.Runspaces.RunspaceStateInfo RunspaceStateInfo {...
SessionStateProxy            Property   System.Management.Automation.Runspaces.SessionStateProxy SessionStateProxy {...
ThreadOptions                Property   System.Management.Automation.Runspaces.PSThreadOptions ThreadOptions {get;set;}
Version                      Property   version Version {get;}

Мой вопрос: как мне сделать аналог в V6?

В моем случае пакет совместимости не подошел бы, потому что мне нужно иметь возможность запускать его в контролируемой среде и без прав администратора. Вот почему я решил использовать версию PWSH 6 на основе (.zip).

Paul Young 02.05.2018 18:19
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
407
0

Другие вопросы по теме