>>> a_set = frozenset({1, 2, 3})
>>> hash(a_set)
-272375401224217160
>>> a_list = [1, 2, 3]
>>> hash(a_list) # Ошибка: список - нехэшируемый тип данных
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a_dict = {[1, 2, 3]: 'example_value'} # Ошибка: нельзя использовать нехэшируемые типы данных как ключи словаря
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a_dict = {(1, 2, 3): 'example_value'} # но можно использовать хэшируемые
>>> a_dict
{(1, 2, 3): 'example_value'}
>>> import sys
>>> sys.getsizeof([1, 2, 3]) # Изменяемый тип данных list
88
>>> sys.getsizeof((1, 2, 3)) # Неизменяемый тип данных tuple
64
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
найдите и удалите запись удаления нужной вам программы - она пропадёт из списка установленных программ.Get-ADComputer -Filter 'OperatingSystem -notlike "*Server*"' | ForEach-Object -Process {
if (Test-NetConnection -ComputerName $PSItem.DnsHostName -InformationLevel Quiet) {
Write-Host $PSItem.Name 'доступен' -ForegroundColor Green
}
else {
Write-Host $PSItem.Name 'НЕдоступен' -ForegroundColor Yellow
}
}
# Установка
$InstalledPackage = Get-Package -Name '1*:Предприятие 8*' -RequiredVersion $PlatformVersion -ErrorAction SilentlyContinue
if ($InstalledPackage) {
##TODO Уже установлена
}
else {
##TODO Вывод в лог 'Запускаем установку версии' $PlatformVersion
Start-Process -FilePath 'C:\windows\system32\msiexec.exe' -ArgumentList $ArgumentsArray -Wait
##TODO Вывод в лог 'Установили версию' $PlatformVersion -ForegroundColor Green
##TODO В try/catch завернуть?
}
# Удаляем старые
$InstalledPackages = Get-Package -Name '1*:Предприятие 8*' -ErrorAction SilentlyContinue
foreach ($Package in $InstalledPackages) {
##TODO Вывод в лог 'Проверяем версию' $Package.Version
if ($Package.Version -notin $AllSupportedPlatforms) {
##TODO Вывод в лог 'Удаляем версию' $Package.Version
Uninstall-Package -Name $Package.Name -RequiredVersion $Package.Version -Force
}
}
Get-ADComputer -Filter 'Фильтр по вкусу' | ForEach-Object -Process {
if (Test-NetConnection -ComputerName $PSItem.DnsHostName -InformationLevel Quiet) {
Write-Host $PSItem.Name 'доступен' -ForegroundColor Green
# В $ScriptBlock будет установка/проверка наличия/удаление старых версий/etc 1С
Invoke-Command -ComputerName $PSItem.DNSHostName -ScriptBlock $ScriptBlock
}
else {
Write-Host $PSItem.Name 'НЕдоступен' -ForegroundColor Yellow
}
}
/**
* Функция возвращает сумму ячеек в диапазоне с цветом фона равным color
* @param {Any[][]} range - Диапазон ячеек
* @param {String} color - цвет фона ячеек
* @return {Number} сумма ячеек в диапазоне с цветом фона равным color
*/
function sumByBackgroundColor(range, color) {
const values = range.getValues();
const backgrounds = range.getBackgrounds();
let sum = backgrounds.reduce((acc, row, ri) => {
return row.reduce((acc, c, ci) => {
if (c === color) {
return acc + values[ri][ci];
}
return acc;
}, acc);
}, 0);
return sum;
}
Public Function SumCellsByColor(rng As Range, clr As Long) As Double
Dim cell As Range
Dim colSum As Double
colSum = 0
For Each cell In rng
If cell.Interior.ColorIndex = clr Then
colSum = colSum + cell.Value
End If
Next cell
SumCellsByColor = colSum
End Function