Я работаю над реализацией одноэлементного класса для хранения некоторой регулярно доступной информации о состоянии для моего скрипта, включая решение проблемы, связанной с тем, что $myInvocation
заполняется только в основном скрипте. Все работает как запланировано с этим.
class pxStatus {
static [pxStatus] $singleton = $null
[string]$Context = 'machine'
[string]$Path = $null
[datetime]$StartTime = (Get-Date)
pxStatus ([string]$path) {
if ([pxStatus]::singleton -eq $null) {
$this.Path = $path
[pxStatus]::singleton = $this
} else {
Throw "Singleton already initialized"
}
}
static [pxStatus] Get() {
if ([pxStatus]::singleton -eq $null) {
Throw "Singleton not yet initialized"
} else {
return [pxStatus]::singleton
}
}
}
CLS
[void]([pxStatus]::New((Split-Path ($myInvocation.myCommand.path) -parent)))
([pxStatus]::Get()).StartTime
([pxStatus]::Get()).Context
([pxStatus]::Get()).Path
За одним исключением. Даже с этим [void] в строке [pxStatus]::New()
я получаю пустую строку в консоли. Даже $null = ([pxStatus]::New((Split-Path ($myInvocation.myCommand.path) -parent)))
выводит на консоль пустую строку. И для моей жизни я не могу понять, что вызывает это.