Дано :
- Использование PowerShell 5.1
- Сценарий powershell, который успешно выполняется на консоли
- с использованием нескольких включений / модулей и oop классов.
- с использованием одноэлементных классов
Когда :
- работает в пространстве выполнения.
$rs = [runspacefactory]::CreateRunspace()
$PowerShell = [powershell]::Create()
$PowerShell.runspace = $rs
$rs.Open()
[void]$PowerShell.AddScript(<script ps1 file>)
[void]$PowerShell.AddArgument(<param x>)
$PowerShell.Invoke()
- отладка пространства выполнения
Затем :
- пространство выполнения зависает в операторе кода, где
- синглтон адресован
- метод синглтона адресован для изменения одного из его свойств
Моя цель :
Для одновременного выполнения нескольких файлов сценариев
Мои вопросы :
- Почему он может потерпеть неудачу на 1-м месте? Это как-то связано с безопасностью потоков? Если так; как я могу попытаться решить эту проблему ..
- Существует ли наилучшая практика использования синглетонов (с возможностью изменения состояний свойств) во всех пространствах выполнения?
class Singleton {
hidden static [Singleton] $_instance = [Singleton]::new()
static [Singleton] $Instance = [Singleton]::GetInstance()
[Guid] $SingletonTarget = [Guid]::NewGuid()
hidden Singleton() {
}
hidden static [Singleton] GetInstance() {
return [Singleton]::_instance
}
}
Источник: https://gist.github.com/guitarrapc/2fde990d166286459c309b7cab03938b