Как мне безопасно удалить данные из устройства Surface?

У Microsoft есть инструмент Surface Data Eraser («ластик для данных Surface»), который описан в статье, опубликованной по адресу: https://technet.microsoft.com/en-us/library/mt605308.aspx. Он доступен для загрузки здесь: http://www.microsoft.com/en-us/download/details.aspx?id=38826. Данный инструмент работает следующим образом. Создается USB-диск, с которого вы запускаете свое устройство и с которого впоследствии устройство будет безопасно очищено в соответствии со стандартами министерства обороны и национального института стандартов и технологий National Institute of Standards и Technology (NIST). Вам потребуется USB-диск и на нем 4 Гбайт свободного пространства для создания программы загрузки.

На моем сервере Hyper-V есть папка «Запланированные виртуальные машины», или Planned Virtual Machines. Для чего она нужна?

В Hyper-V интерфейс WMI v2 использует двухэтапный процесс для импорта виртуальных машин. Импорт сначала планируется и только потом производится, а папка «Запланированные виртуальные машины» используется для первого этапа данного процесса. Методика двухэтапного импорта с использованием инструментария WMI подробно описана в статье по адресу: http://blogs.msdn.com/b/taylorb/archive/2014/03/12/importing-vms-utilizing-the-hyper-v-wmi-v2-namespace.aspx.

Если я конвертирую виртуальную машину Azure серии D/G в DS/GS, мигрирует ли ее хранилище в хранилище Premium?

Вы можете изменить размер виртуальных машин Azure и даже сменить их номенклатурную позицию (SKU) с помощью портала Azure или того же PowerShell, например так:

$vm.HardwareProfile.VirtualMachineSize = ""
   | Update-AzureVM

Нужно помнить о том, что в случае изменения размера виртуальной машины или смены ее номенклатурной позиции (SKU) содержимое ее временного диска будет потеряно (это означает, что не нужно рассматривать временный диск как постоянный и хранить там хоть сколько-нибудь важные данные). Также следует помнить, что виртуальные машины разворачиваются в «облачных» службах, которые в Azure связаны с кластером, и с помощью диспетчера служб Azure можно изменить SKU или размер виртуальной машины только на SKU или размер, поддерживаемые в этом кластере. Когда изменяется SKU или размер виртуальной машины, вы всегда будете ограничены в выборе теми значениями параметров, которые поддерживаются в данном кластере. Однако, если виртуальная машина выполняется на диспетчере ресурсов Azure и освобождена, можно изменить ее размер или SKU на любые доступные в данном регионе, поскольку диспетчер ресурсов Azure не привязан к «облачным» службам, а следовательно, и к кластеру.

Если изменить серию виртуальной машины с D/G на DS/GS, то ее хранилище не будет перемещено из хранилища Azure в хранилище типа Premium в Azure. Оно все так же останется в обычном хранилище Azure. Если вы хотите перенести хранилище типа Premium в Azure, тогда нужно будет удалить виртуальную машину, сохранив при этом ее хранилище, переместить ее диски в хранилище типа Premium в Azure, а затем уже создать новую виртуальную машину серии DS/GS, используя при этом скопированные ранее диски.

На сайте компании Microsoft есть замечательная статья об этом, ее можно найти по адресу: http://blogs.msdn.com/b/igorpag/archive/2015/11/04/azure-vm-resizing-and-sku-change-in-asm-and-arm.aspx.

На некоторых моих устройствах в панели управления модуль «Система» показывает, что имеется «ограниченная поддержка сенсорного ввода», в то время как на других — «полная». В чем причина такого различия?

Полная или ограниченная поддержка сенсорного ввода, которая доступна на устройстве, зависит от того, был ли драйвер данного сенсорного устройства сертифицирован на соответствие стандартам Windows для сенсорных устройств, что, в свою очередь, означает прохождение этим драйвером тестов контроля качества для сенсорных устройств (THQA), которые подробно описаны по адресу: https://msdn.microsoft.com/en-us/library/windows/hardware/dn169213.aspx.

К устройствам с ограниченной поддержкой сенсорного ввода предъявляются менее жесткие требования со стороны операционной системы, в том числе и в отношении задержки, а также доступных жестов.

Как можно быстро проверить, какие именно размеры виртуальных машин доступны в различных регионах Azure?

На сайте компании Microsoft опубликована специальная диаграмма, на которой показаны различные службы Azure и их доступность для регионов Azure. Данную диаграмму можно найти по адресу: https://azure.microsoft.com/en-us/regions/#services.

Как мне осуществить массовый импорт виртуальных машин на сервер Hyper-V с изменением имени сетевого коммутатора, к которому они подсоединены?

Недавно я перемещал большое количество виртуальных машин на новый кластер. Новый кластер использовал новое имя для виртуального коммутатора, что блокировало бы обычный импорт виртуальных машин (помните, что в версии 2012 вам не надо сначала экспортировать виртуальные машины, чтобы импортировать их). К счастью, найти список проблем совместимости просто (обычно всему виной неправильное имя коммутатора) и затем их можно скорректировать. Приведу сценарий:

$XMLFiles = Get-ChildItem C:\ClusterStorage\VMs\*.XML -Recurse
          foreach ($File in $XMLFiles)
          {
              $File.FullName
              $Report = Compare-VM -Path $File.FullName
              $Report.Incompatibilities[0].Source |
              Connect-VMNetworkAdapter -SwitchName
              ‘Datacenter Switch No Team’
              Import-VM -CompatibilityReport $Report
          }

Обратите внимание, что этот сценарий работает, только если виртуальная машина имеет один сетевой адаптер, который нуждается в обновлении, и никаких других проблем нет. Если есть и другие неполадки, то импорт выполнить не удастся.

Как мне проверить адрес провайдера и таблицы политик, когда я использую сетевую виртуализацию Network Virtualization в Hyper-V?

При использовании Network Virtualization каждый узел, который содержит виртуальную машину в виртуальной сети, имеет адрес провайдера, применяемый для реальной передачи виртуализованного сетевого трафика. Каждый узел также управляет таблицей политики, в которой перечислены виртуальные машины в виртуальных сетях, пользовательские адреса виртуальных машин (IP-адрес в виртуальной сети виртуальной машины) и адрес провайдера, который используется для коммуникации с правильным хостом назначения (чтобы впоследствии передать трафик виртуальной машине). Всю информацию можно просмотреть.

Чтобы увидеть адреса провайдера для хоста, запустите команду:

PS C:\> Get-NetVirtualizationProviderAddress
    
     ProviderAddress : 172.1.1.6
     InterfaceIndex : 44
     PrefixLength : 0
     VlanID : 173
     AddressState : Preferred
     MACAddress : 001dd8b71c08
     ManagedByCluster : False
    
     ProviderAddress : 172.1.1.3
     InterfaceIndex : 44
     PrefixLength : 0
     VlanID : 173
     AddressState : Preferred
     MACAddress : 001dd8b71c03
     ManagedByCluster : False

Обратите внимание, что в таблице два адреса провайдера для хоста, поскольку хост содержит виртуальные машины в двух разных виртуальных сетях. Чтобы проверить возможность подключения и взаимодействия между хостами при использовании адресов провайдера, используйте команду проверки ping -p .

Чтобы просмотреть таблицу политики (поиск и маршрутизация), введите команду:

PS C:\> Get-NetVirtualizationLookupRecord | Sort-Object VMName
   | Format-Table CustomerAddress,VirtualSubnetID,ProviderAddress,
   VMName -AutoSize
                             
CustomerAddress VirtualSubnetID ProviderAddress VMName
--------------- --------------- --------------- ------
192.168.10.4 6864375 172.1.1.3 Blue-VM-1
192.168.10.5 6864375 172.1.1.4 Blue-VM-2
192.168.11.2 6836310 172.1.1.3 Blue-VM-3
192.0.2.253 16200119 172.1.1.6 DHCPExt.sys
192.0.2.253 6864375 172.1.1.3 DHCPExt.sys
192.0.2.253 6836310 172.1.1.3 DHCPExt.sys
192.168.10.1 16200119 1.1.1.1 GW
192.168.11.1 6836310 1.1.1.1 GW
192.168.10.1 6864375 1.1.1.1 GW
192.168.10.2 16200119 172.1.1.6 Red-VM-1

Чтобы просмотреть все домены маршрутизации (виртуальные сети) и подсети в виртуальных сетях, используйте Get-NetVirtualizationCustomerRoute.

Как мне задать параметры настройки системы Windows 10 для использования режима Current Branch for Business?

В Windows 10 сменился способ добавления новых функций, раннее появлявшихся при выпуске новых версий Windows каждые несколько лет. Вместо этого используется периодическое добавление новых функций, которые постоянно добавляются в течение года в новых сборках Windows 10 — своеобразная служба Windows-as-a-Service (WaaS). Точно периодичность неизвестна, ожидается, что это будет происходить каждые 3-4 месяца. Пользователи, которые являются членами сообщества Insider Preview («Внутреннего предварительного просмотра»), могут сначала протестировать новые функции в новых сборках. После внутреннего тестирования функций в Microsoft функции становятся доступны всем в виде текущего выпуска Current Branch (CB). Многие компании не хотят использовать новые функции сразу и предпочитают задерживать их внедрение, для того чтобы убедиться, что новые возможности будут протестированы большим количеством пользователей. После этого они проводят свое внутреннее тестирование, которое обеспечивает режим Current Branch for Business (CBB). Это один цикл после выпуска (3-4 месяца). Организации, которые используют технологии развертывания для предприятия, смогут в дальнейшем задержать развертывание CBB на своих внутренних системах на еще более длительное время. Судя по реализации групповой политики Group Policy, эти новые свойства появятся через 8 месяцев, то есть будет выпущено такое решение, как Windows Update for Business и другие решения MDM.

Для тех, кто размышляет над тем, как протестировать и развернуть Windows 10, я бы предложил рассмотреть следующие процедуры:

  • Windows Insider Preview Branch — тестовые системы и очень маленькие пилотные проекты для запуска процесса оценивания и тестирования свойств.
  • Current Branch — те, кто первым использует новинки в организации, первые пилотные проекты и ИТ-системы для запуска процесса подготовки более обширного процесса внедрения.
  • Current Branch for Business — широкое развертывание в организации, показывающей успешное внедрение Current Branch, эквивалентное предыдущему (обратите внимание, что этот процесс может быть задержан при помощи инструментов управления предприятием и т. д.).
  • Long Term Servicing Branch — очень узкие специализированные системы (это должен быть небольшой процент систем).

Если у вас нет решения для управления развертыванием на предприятии, но вы хотите использовать CBB, то вы можете сделать это посредством изменения своей системы Windows:

  1. Откройте Settings.
  2. Выберите модуль Update & Security.
  3. На вкладке Windows Update выберите Advanced options.
  4. Установите флажок задержки обновлений Defer upgrades (см. экран 1).

 

Включение режима задержки обновлений
Экран 1. Включение режима задержки обновлений

 

Вот и все, теперь можно настроить параметры для систем, используя Group Policy (и решения типа MDM):

  1. Откройте объект групповой политики Group Policy Object, который предназначен для систем, на которых вы хотите задействовать CBB.
  2. Перейдите по маршруту Computer Configuration — Policies — Administrative Templates — Windows Components — Windows Update.
  3. Двойным щелчком мыши щелкните по параметру Defer Upgrades and Updates.
  4. Активируйте политику и задайте время для выполнения обновления.
  5. Щелкните ОК.

Обратите внимание, что существует еще режим Long Term Servicing Branch (LTSB), но он предусмотрен для систем, которые не предназначены для новинок и которым нужен более высокий уровень стабильности.

Если я использую вариант применения обновлений Current Branch для Business, то задерживаю ли я получение критических обновлений и обновлений системы безопасности?

Нет. Использование варианта Current Branch для Business (CBB) задерживает получение новых функций Windows 10, а критических обновлений и обновлений системы безопасности это не касается.

Нужен ли мне в Windows Server 2016 выделенный хост для экземпляра шлюза сетевой виртуализации Network Virtualization?

В Windows Server 2012 R2 необходимо выделить хост Hyper-V для размещения шлюзов NVGRE, которые не будут содержать обычные виртуальные машины, являющиеся частью виртуальных сетей Virtual Networks. Шлюзы NVGRE активируют возможности подключения и взаимодействия виртуальных сетей, например возможность внешнего подключения и взаимодействия, подсоединение к другим сетям и возможность подключения и взаимодействия между сайтами. Windows Server 2016 удаляет требование выделенного хоста для шлюзов, которые теперь могут сосуществовать с экземплярами виртуальных машин с сетевой виртуализацией.

Как можно управлять FTP, используя PowerShell?

В PowerShell предусмотрен полный доступ к методам. NET, которые имеют функции FTP, но существуют и доступные для загрузки модули PowerShell, которые предлагают функции управления FTP, такие же простые, как использование команд PowerShell. Великолепный пример библиотеки, которой можно воспользоваться, доступен по адресу: https://gallery.technet.microsoft.com/scriptcenter/PowerShell-FTP-Client-db6fe0cb. Как только модуль извлечен в папку с путем, например, C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules, его можно загрузить и использовать. Ниже представлен пример подсоединения к серверу FTP и просмотра его содержимого:

Import-Module PSFTP
$FTPServer = 'ftp.host.com'
$FTPUsername = 'username'
$FTPPassword = 'password'
$FTPSecurePassword = ConvertTo-SecureString -String
   $FTPPassword -asPlainText -Force
$FTPCredential = New-Object System.Management.Automation.
   PSCredential($FTPUsername,$FTPSecurePassword)

Set-FTPConnection -Credentials $FTPCredential -Server
   $FTPServer -Session MySession -UsePassive
$Session = Get-FTPConnection -Session MySession
Get-FTPChildItem -Session $Session -Path /htdocs #-Recurse

Если я использую теги в Azure, сколько тегов может иметь ресурс?

Каждый ресурс или ресурсная группа могут иметь до 15 тегов, и каждый содержит до 512 символов, не зависящих от регистра, тогда как значения могут содержать до 256 символов, зависящих от регистра. Подробную информацию о тегах можно найти в статье: https://msdn.microsoft.com/en-us/library/azure/dn848368.aspx.

Можно ли во время обработки отказа Hyper-V Replica вставить несколько IP-адресов в один сетевой адаптер?

Hyper-V Replica предоставляет настройки IP-адресов на случай аварии для каждого сетевого адаптера, которые передаются в виртуальную машину во время обработки отказа. Вы можете присоединить несколько сетевых адаптеров к виртуальной машине, каждый со своим аварийным набором IP-параметров, но что делать, если одному адаптеру нужно несколько IP-адресов? Это можно сделать, используя WMI, но не через графический интерфейс или PowerShell. У Microsoft есть пример назначения нескольких IP-адресов во время обработки отказа. Он описан в статье: http://blogs.technet.com/b/virtualization/archive/2012/05/29/inject-ip-address-into-the-vm-during-failover.aspx. Просмотрите статью до конца, там вы найдете пример кода. Основное действие — это создание массива для каждого адаптера, состоящего из нескольких IP-адресов и масок подсети.

Восприимчив ли Hyper-V к атакам на память с исключением избыточных данных?

Существует несколько видов атак против гипервизоров, которые используют исключение избыточных данных в оперативной памяти. Они описаны в статье по адресу: http://www.kb.cert.org/vuls/id/935424. Обратите внимание, что Hyper-V не выполняет исключения избыточных данных в памяти во время написания статьи (в версии 2012 R2). Таким образом, он не восприимчив к такой атаке. Поскольку современные операционные системы используют большие страницы памяти, целесообразность исключения избыточных данных в памяти уменьшается, так как вероятность нахождения точной копии страниц на 2 Мбайт слишком мал. Вдобавок Hyper-V использует динамическую память для интеллектуального добавления и удаления памяти в виртуальных машинах, в зависимости от запросов памяти от процессов.

Какие существуют максимальные ограничения для AD Lightweight Directory Services?

Лимиты для службы каталогов AD LDS такие же, как и для доменных служб AD DS. Они описаны в статье по адресу: https://technet.microsoft.com/en-us/library/active-directory-maximum-limits-scalability(v=ws.10).aspx.

Как использовать новую функцию присоединения в Outlook 2016?

В Office 2016 появился ряд новых функций, и одна из них особенно полезна и достойна внимания. Это возможность без труда присоединять недавно использованный файл. Outlook 2016 интегрируется со списком недавно использованных файлов, и щелчок по кнопке присоединения файла позволит увидеть все недавно использованные файлы, что значительно облегчает процесс присоединения файлов, с которыми вы работаете (см. экран 2).

 

Новая функция присоединения файлов в Outlook 2016
Экран 2. Новая функция присоединения файлов в Outlook 2016

 

Как мне прочитать содержимое двоичного файла настроек виртуальной машины VMCX в Windows 2016 Hyper-V?

Windows Server 2016 Hyper-V преобразует файл настроек виртуальной машины в бинарный файл, который предоставляет дополнительную отказоустойчивость в случае разрушения и избавляет от привычки пытаться вручную редактировать файл. Если вы хотите просмотреть настройки внутри файла VMCX, невозможно просто вывести файл на печать, так как он теперь двоичный. Самый лучший способ, который я нашел, — это создание временного объекта, содержащего копию настроек из файла VMCX. В этом случае можно просмотреть все данные внутри временного объекта, который является копией настроек в VMCX. Например:

$tempVM = (Compare-VM -Copy -Path.\yourvmcxfile.vmcx
   -GenerateNewID).VM

Все ключевые свойства вы можете просмотреть, если используете команду:

$tempVM | select *

Также можно просмотреть особые коллекции, которые являются частью объекта, такие как сетевые адаптеры и диски. Например:

$tempVM.NetworkAdapters («сетевые адаптеры»)
$tempVM.HardDrives («жесткие диски»)
$tempVM.FibreChannelHostBusAdapters («стандарт
   передачи данных адаптера главной шины»)

Если вы введете $tempVM и нажмете на ярлык, то PowerShell покажет все доступные вам настройки.

Далее показан пример такого действия:

PS C:\> $tempVM = (Compare-VM -Copy -Path .\DF8560F4-
   4A6A-49B7-8E87-3B54D4101B40.vmcx -GenerateNewID).VM
      PS C:\> $tempVM
     
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
savdaldemo01 Off 0 0 Operating normally
     
      PS C:\> $tempVM | select *
      VMName : savdaldemo01
      VMId  : 904f432b-d545-4a9f-
    9560-8dc9145a56ae
      Id : 904f432b-d545-4a9f-
    9560-8dc9145a56ae
      Name : savdaldemo01
      State  : Off
      IntegrationServicesState :
      OperationalStatus : {Ok}
      PrimaryOperationalStatus : Ok
      SecondaryOperationalStatus :
      StatusDescriptions  : {Operating normally}
      PrimaryStatusDescription : Operating normally
      SecondaryStatusDescription :
      Status : Operating normally
      Heartbeat :
      ReplicationState :
      ReplicationHealth :
      ReplicationMode :
      CPUUsage : 0
      MemoryAssigned : 0
      MemoryDemand : 0
      MemoryStatus :
      SmartPagingFileInUse :
      Uptime :
      IntegrationServicesVersion :
      ResourceMeteringEnabled : False
      AutomaticCriticalErrorAction : Pause
      AutomaticCriticalErrorActionTimeout : 30
      ConfigurationLocation : C:\Virtuals
      SnapshotFileLocation : C:\Virtuals
      CheckpointType : Production
      AutomaticStartAction : StartIfRunning
      AutomaticStopAction : Save
      AutomaticStartDelay : 0
      SmartPagingFilePath : C:\Virtuals
      NumaAligned :
      NumaNodesCount :
      NumaSocketCount :
      Key : Microsoft.HyperV.
    PowerShell.
    VirtualMachineObjectKey
      IsDeleted : False
      ComputerName : SAVDALHVFX
      Version : 6.0
      Notes : #CLUSTER-INVARIANT#:
    {94838b88-2846-4e3d-
    9caa-850fb785fe3b}
      Generation : 2
      Path : C:\Virtuals
      CreationTime : 8/5/2015 12:35:11 PM
      IsClustered : False
      SizeOfSystemFiles : 0
      ParentSnapshotId :
      ParentSnapshotName :
      MemoryStartup : 2147483648
      DynamicMemoryEnabled : False
      MemoryMinimum : 536870912
      MemoryMaximum : 1099511627776
      ProcessorCount : 1
      RemoteFxAdapter :
      NetworkAdapters : {Network Adapter}
      FibreChannelHostBusAdapters : {}
      ComPort1 : Microsoft.HyperV.
    PowerShell.VMComPort
      ComPort2 : Microsoft.HyperV.
    PowerShell.VMComPort
      FloppyDrive :
      DVDDrives : {}
      HardDrives : {Hard Drive on SCSI
     controller number 0
    at location 0}
      VMIntegrationService : {Time Synchronization,
     Heartbeat, Key-Value
    Pair Exchange,
      Shutdown...}
      PS C:\> $tempVM.NetworkAdapters

     
Name IsManagementOs VMName SwitchName
MacAddress Status IPAddresses
---- -------------- ------ ---------- ----------  ---------------
Network Adapter False savdaldemo01 External
   Switch 000000000000 

 

Какой существует самый лучший способ управлять паролем для набора идентификационных данных Azure Automation?

При работе с Azure Automation часто бывает нужно подсоединяться к подпискам Azure, что требует использования идентификационных данных службы каталогов Azure AD. Эти идентификационные данные должны быть предназначены для использования при автоматизации, аналогично тому, как служебные учетные записи применяются в локальной службе каталогов Active Directory, однако по умолчанию пароли для учетных записей Azure AD должны меняться каждые 90 дней. Существует ряд способов для решения этой проблемы.

Первый способ — это настройка пароля таким образом, чтобы у него не было срока истечения действия. Данный прием распространен для служебных учетных записей в локальных сетях, однако он несет потенциальный риск для системы безопасности.

Другой способ предполагает реализацию процесса для автоматического обновления пароля и идентификационных данных учетной записи Azure AD аналогично управляемым служебным учетным записям Managed Service Accounts в службе каталогов Active Directory. Сперва я создал некий код, запускавшийся локально, для подготовки процесса, который будет работать с Azure Automation. Этот подготовительный процесс использовал команды Azure AD и помощника для регистрации в системе, как будет показано ниже. Обратите внимание, что важно избежать необходимости ввода идентификационных данных. Код хранит действующий пароль в незашифрованном виде, что нежелательно, но мое намерение состояло в том, чтобы сделать пароль зашифрованным, когда я перемещу процесс в Azure Automation. Еще имейте в виду, что должен существовать набор переменных, содержащий имя подписки (SubName), набор идентификационных данных (MyCred), которые будут обновляться, и незашифрованный строковый набор, для того чтобы сохранить пароль (MyCredPassword).

#The automation account is a co-admin and a global admin of the AD
   so it can change password. Could limit
$AutomationAccountName = 'SavAutomationEastUS2'
$SubName = Get-AzureAutomationVariable -AutomationAccountName
    $AutomationAccountName -Name 'SubName'
$AutoCred = Get-AzureAutomationCredential -AutomationAccountName
    $AutomationAccountName -Name MyCred
#Generate a new password
$randomObj = New-Object System.Random
$NewPassword=""
1..16 | ForEach { $NewPassword = $NewPassword +
   [char]$randomObj.next(33,126) }
$NewPassword
Create credential to connected to Azure AD
$user = $autocred.UserName
$pworig = (Get-AzureAutomationVariable -Name MyCredPassword
    -AutomationAccountName $AutomationAccountName).Value
$pw = ConvertTo-SecureString $pworig -AsPlainText -Force
$AzureADCredential = New-Object -TypeName System.Management.
   Automation.PSCredential -ArgumentList $user, $pw
Connect-MsolService -Credential $AzureADCredential
Set-MsolUserPassword -UserPrincipalName automation@savilltech.net
   -NewPassword $NewPassword -ForceChangePassword $false
$user = $autocred.UserName
$pw = ConvertTo-SecureString $NewPassword -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.
   PSCredential -ArgumentList $user, $pw
Set-AzureAutomationCredential -Value $cred
   -Name $AutoCred.Name -AutomationAccountName
   $AutoCred.AutomationAccountName
#Save password right now in case we need it. What about encrypt.
   Assume will decrypt
Set-AzureAutomationVariable -AutomationAccountName
   $AutomationAccountName -Name MyCredPassword
   -Value $NewPassword -Encrypted $false

Чтобы перенести код в Azure Automation, мне пришлось внести изменение, поскольку помощник по регистрации в системе недоступен, а он нужен для использования команд Azure AD. Поэтому я изменил код для использования команд, которые управляют Graph API. Кроме того, код для создания случайного пароля был модифицирован, так как существующий код для случайного пароля не работал в Azure Automation. Далее приведу код для Azure Automation, который я создал и который вы можете впоследствии настроить на еженедельный запуск. Таким образом, каждую неделю он будет создавать новый пароль. Кроме того, пароль, который требуется для вызова Graph API, сохраняется зашифрованным.

workflow UpdateAutomationAccount
{
    #The automation account is a co-admin and a global admin of the
        AD so it can change password. Could limit
    $AutomationAccountName = 'SavAutomationEastUS2'
    # Azure AD domain to authenticate against
    $AzureADDomain = Get-AutomationVariable
        -Name 'AzureADDomain'
   
    #Get the subscription name
    $SubName = Get-AutomationVariable -Name ‘SubName’
    $MyCred = Get-AutomationPSCredential -Name ‘MyCred’
    $pworig = $MyCred.GetNetworkCredential().Password
   
    Add-AzureAccount -Credential $MyCred
   
    Select-AzureSubscription -SubscriptionName $SubName
   
    $AutoCred = Get-AzureAutomationCredential
        -AutomationAccountName $AutomationAccountName
        -Name ‘MyCred’
    $AutoUser = $AutoCred.UserName
   
    #Generate a new password that is 16 characters with at least
        2 special
    $NewPassword = InlineScript {
    #Load «System.Web» assembly in PowerShell console
    Add-Type -AssemblyName System.Web
    #Calling GeneratePassword Method
    [System.Web.Security.Membership]::GeneratePassword(16,2)
    }
    #Get string ready for JSON which fixes certain characters
    $JSONNewPassword = ConvertTo-Json $NewPassword
    #Connect using Graph API which needs modules from
        https://github.com/tiander/OMSsearchAPI
    $APIVersion = "1.5"
    $AppIdURI = "https://graph.windows.net"
    
    # Set up connection object to pass into Invoke-AzureADMethod
    $ADConnection = @{"Username"=$AutoUser;"AzureADDomain"
        =$AzureADDomain;"Password"=$pworig;"APPIdURI"=
        $AppIdURI;"APIVersion"=$APIVersion}
    $URI = "https://graph.windows.net/$AzureADDomain/
        users/$AutoUser"
    $Body =  @"
{
  "passwordProfile": {
    "password": $JSONNewPassword,
    "forceChangePasswordNextLogin": false
  }
}
"@
   
    #Update the Azure AD account password
    $UserUpdate = Invoke-AzureADMethod -URI $URI
        -Connection $ADConnection -Body $Body -Method PATCH
   
    #Create updated credential object for account with new password
    $NewSecurePassword = ConvertTo-SecureString $NewPassword
        -AsPlainText -Force
    $cred = New-Object -TypeName System.Management.
        Automation.PSCredential -ArgumentList $AutoUser,
         $NewSecurePassword
   
    #Update the automation credential object with new password
    Set-AzureAutomationCredential -Value $cred -Name $AutoCred.
        Name -AutomationAccountName
        $AutoCred.AutomationAccountName   

Чтобы использовать этот код, необходимо сделать следующее.

1. Импортируйте два модуля Graph API по ссылке https://github.com/tiander/OMSsearchAPI в учетную запись Automation;

2. Вам нужны следующие наборы, созданные в учетной записи автоматизации (см. экран 3):

  • MyCred — набор идентификационных данных, который настроен с помощью текущих имени пользователя и пароля учетной записи автоматизации. Этот набор является учетной записью, пароль которой обновляется.
  • SubName — строковый набор, содержащий имя подписки Azure.
  • AzureADDomain — строковый набор, содержащий имя экземпляра Azure AD, которой принадлежит учетная запись.

 

Наборы данных для автоматизации
Экран 3. Наборы данных для автоматизации

3. Учетная запись автоматизации, вероятно, должна быть административной, для того чтобы иметь разрешение на изменение паролей в Azure AD.

4. Вставьте указанный выше код в набор заданий и измените имя учетной записи автоматизации в начале сценария. Код также можно загрузить из TechNet Gallery (https://gallery.technet.microsoft.com/Automation-to-automatically-326aa3ed). Там я храню его обновленным.

5. Протестируйте набор заданий, запустив его в тестовом режиме.

6. Настройте набор заданий на еженедельный запуск.