Обрабатывать только почтовые ящики, в которых разрешение на папки не равно

Python не имеет переменных. У него есть имена. Все имена указывают на объект.

Атрибуция указывает имя на объект. Это так просто. Вы не можете заставить атрибуцию генерировать новый объект.

a = x
b = a # means the name "b" also refers to x - regardless if x is mutable or not

Нет, вы не можете сделать изменяемые объекты неизменными таким образом - если кто-то получит ссылку на изменяемый объект, который они могут изменить, и все ссылки на тот же объект будут затронуты.

Просто потому, что объект неизменен, не делает объекты с одинаковым значением одинаковыми автоматически - попробуйте следующее:

>>> x = 'foo bar'
>>> y = ' '.join(['foo', 'bar'])
>>> x == y
True
>>> x is y
False
>>> id(x), id(y)
(139789175899936, 139789175899984)

Как вы можете видеть, это два разных неизменяемых объекта с одинаковым значением! Оба существуют отдельно в памяти!

Чтобы сделать их хешируемыми, возможно - вам нужно определить метод __hash__, который возвращает некоторый уникальный хеш, который сравнивает равный, когда объекты равны - фактически по умолчанию все объекты уже возвращают id как хэш, поэтому вы можете просто обернуть класс:

class HashableContainer:
    def __init__(self, obj):
        self._obj = obj

l = [] # mutable, no hash
ic = HashableContainer(l) # mutable, but hashable

d = {}
d[ic] = 'test' # can be used as key

Однако есть оговорка - если вы создаете новый HashableContainer с тем же контентом, он будет считаться другой объект - потому что он будет иметь другой хеш (на основе его id)

0
задан marc_s 18 January 2019 в 20:50
поделиться

1 ответ

Ниже кода, который я написал, чтобы сделать это. Это работает в моей системе.

foreach ($mbx in Get-Mailbox -ResultSize unlimited) {
  Get-MailboxFolderStatistics -Identity $mbx | Where-Object {

Ниже кода, который я написал, чтобы сделать это. Это работает в моей системе.

[110]

Вместо того, чтобы сначала назначать все объекты почтового ящика переменной, используется оператор foreach с Get-Mailbox в нем. Когда вы начнете администрировать систему Exchange с тысячами почтовых ящиков, вы поймете, почему это лучше

.FolderType -eq 'Calendar'} | ForEach-Object { $path = "$($MBX.Alias):$(

Ниже кода, который я написал, чтобы сделать это. Это работает в моей системе.

[110]

Вместо того, чтобы сначала назначать все объекты почтового ящика переменной, используется оператор foreach с Get-Mailbox в нем. Когда вы начнете администрировать систему Exchange с тысячами почтовых ящиков, вы поймете, почему это лучше

.Folderpath)".Replace('/','\') $DefaultPermission = Get-MailboxFolderPermission -Identity $path -User Default if ($DefaultPermission.AccessRights -notcontains 'PublishingEditor') { Set-MailboxFolderPermission -Identity $path -AccessRights PublishingEditor -User Default } else { Write-Host 'Already Done' } } }

Вместо того, чтобы сначала назначать все объекты почтового ящика переменной, используется оператор foreach с Get-Mailbox в нем. Когда вы начнете администрировать систему Exchange с тысячами почтовых ящиков, вы поймете, почему это лучше

0
ответ дан Gert Jan Kraaijeveld 18 January 2019 в 20:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: