Каким образом можно добавить диски данных к нескольким виртуальным машинам Hyper-V, используя PowerShell?

Недавно в тестовой лаборатории мне нужно было быстро добавить два диска данных к четырем виртуальным машинам, на которых работает версия сервера 2016 TP3, чтобы настроить Storage Spaces Direct. Представленный ниже код PowerShell добавляет два диска данных ко всем виртуальным машинам по их именам, определенным в первом массиве. Вы можете изменить путь к местоположению, где хотите создать диски. По умолчанию PowerShell создает их в подпапке VMs на томе CSV с именем виртуальной машины.

$VMnames = 'win216tp301','win216tp302','win216tp303',
'win216tp304'
    
     foreach($VMname in $VMnames)
     {
         Write-Output "Adding disks to $VMname"
         $DataDisk1 = 'C:\ClusterStorage\VMs\' + $VMname +
         '\' + $VMname + 'Data1.vhdx'
         $DataDisk2 = 'C:\ClusterStorage\VMs\' + $VMname +
         '\' + $VMname + 'Data2.vhdx'
         New-VHD -Path $DataDisk1 -Dynamic -SizeBytes 10GB
         New-VHD -Path $DataDisk2 -Dynamic -SizeBytes 10GB
         Add-VMHardDiskDrive -VMName $VMname -Path $DataDisk1
         Add-VMHardDiskDrive -VMName $VMname -Path $DataDisk2
     }

Существуют ли хорошие руководства по проектированию надежных сетевых архитектур, использующих общедоступную «облачную» среду?

При создании проекта высокодоступных решений в «облачной» среде и особенно в Azure используется несколько основных правил.

  • Всегда следует иметь несколько копий службы и помещать их в высокодоступный набор Availability Set, чтобы обеспечить защиту от аппаратных неисправностей и плановых остановок на техобслуживание.
  • Для виртуальных машин в Availability Set стоит использовать различные учетные записи системы хранения данных. Это дает дополнительную защиту от неисправностей кластера хранения или стойки хранения.
  • Для достижения максимального уровня доступности расположите копии в нескольких регионах и используйте службы, такие как менеджер трафика Azure Traffic Manager, для распределения трафика между ними.

Рекомендую также прочитать статью Microsoft о проектировании надежной «облачной» инфраструктуры: msdn.microsoft.com/library/azure/jj853352.aspx.

Есть ли при развертывании Azure Resource Manager IaaS какие-нибудь ограничения на совместное использование виртуальных машин с одним или несколькими сетевыми адаптерами?

Нет. В «облачной» службе вы не можете смешивать виртуальные машины с одним или несколькими сетевыми адаптерами, но Azure Resource Manager не использует «облачных» служб. Следовательно, ограничений на совместное использование нет.

Каким образом ASR восстанавливает физический сервер?

Если быть точным, ASR восстанавливает не физический сервер, а его настройки в виртуальной машине VMware. Таким образом, когда вы защищаете физический сервер в Azure посредством ASR, вы не можете восстановить его на физическом сервере. Вместо этого вам нужно восстановить его настройки в виртуальной машине VMware.

Существуют ли ограничения у хранилища Azure Premium Storage?

Для постоянных учетных записей Azure предусмотрено ограничение по числу операций ввода-вывода IOPS и ограничение по объему. Учетные записи Premium Storage имеют ограничение в 35 Тбайт, но не имеют заданного ограничения на IOPS. Вместо этого лимит на объем опосредованно ограничивает количество IOPS на одну учетную запись Premium Storage. Принимая во внимание, что существует ограничение в 35 Тбайт, можно получить примерно 150 000 IOPS для одной учетной записи Premium Storage.

Когда я подсоединяю дополнительный монитор с разъемом DisplayPort к своей системе Windows, то после того, как экран переходит в спящий режим, все приложения на дисплее с DisplayPort перемещаются на другой дисплей. Почему это происходит?

Устройства с DisplayPort — подключаемого типа, это облегчает добавление или удаление устройств. Здесь мы наблюдаем эффект, при котором дополнительный дисплей с DisplayPort показывается как отсоединенный от системы, если он переходит в режим экономии питания PowerSave. Когда это происходит, окна приложений, которые были открыты на дисплее, перемещаются на другие дисплеи в системе. Такая ситуация может сильно обескуражить пользователя и, к сожалению, простого способа решить проблему не существует. Однако можно выполнить два действия, которые, как я выяснил, могут помочь (хотя это не идеальный вариант):

  1. Заблокировать режим PowerSave на дисплеях.
  2. Подсоединить дисплей, используя вместо DisplayPort разъем HDMI.

Как мне удалить встроенные приложения из Windows 10, для которых не предусмотрен вариант удаления?

Некоторые приложения Windows (например, приложения Universal) в Windows 10 не имеют возможности удаления, однако они все равно представляют собой пакеты AppX, установленные в операционной системе, поэтому их можно просмотреть и удалить, используя PowerShell.

Запустите сессию PowerShell с повышенными привилегиями и введите команду

Get-AppxPackage ** | Remove-AppxPackage

Она выполнит удаление. Например, чтобы удалить встроенные приложения почты Mail и Calendar, я использую следующую команду:

Get-AppxPackage *communi* | Remove-AppxPackage

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

Get-AppxPackage | ft Name, PackageFullName -AutoSize

Некоторые известные пакеты, которые вы, возможно, хотите удалить, перечислены ниже. Здесь используется часть имени пакета:

  • Camera — *camera*;
  • Mail и Calendar — *communi*;
  • People — *people*;
  • Money, Sports, News, Travel, Health, Food and Weather — *bing* или для удаления определенных пакетов используйте *bingsports*, *bingtravel* и т. д. Введите команду 'Get-AppxPackage *bing* | ft Name, PackageFullName -AutoSize' для просмотра имен;
  • Groove Music and Movies & TV — *zune*;
  • Xbox — Why?:-) *xbox*;
  • Solitare — *solit*;
  • 3D Builder — *3d*.

У меня очень низкая производительность Internet Explorer в Windows 10, когда я подсоединяюсь к определенным сайтам по HTTPS. Могу ли я что-то предпринять, чтобы ускорить процесс?

В Internet Explorer при использовании Windows 10 я обнаружил несколько веб-сайтов, которые загружаются очень медленно. Решением проблемы стала блокировка протокола TLS 1.2 в IE:

  1. Откройте Internet Explorer.
  2. Откройте в меню Internet Options (щелкните значок шестеренки в правом верхнем углу или нажмите комбинацию клавиш Alt + T).
  3. Выберите вкладку Advanced.
  4. Прокрутите до раздела Security.
  5. Снимите флажок у параметра Use TLS 1.2.
  6. Нажмите ОК.

TLS расшифровывается как Transport Layer Security, он является преемником Secure Sockets Layer (SSL). Блокировка TLS 1.2 означает, что будет использоваться TLS 1.1.

Я добавил новые диски к пулу хранения Storage Pool. Как мне распределить данные на новых дисках?

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

Если вы хотите выполнить такой тип выравнивания, то единственное решение в Windows Server 2012 или 2012 R2 — это копирование данных на диск, с которого впоследствии потребуется распределить их по дискам, а затем удалить исходных данные.

В Windows Server 2016 и Windows 10 предусмотрено решение в виде команды Optimize-StoragePool, которая распределяет данные на дисках. Это означает, что если вы добавляете новые диски к Storage Pool, то можно запустить такую команду:

Optimize-StoragePool -FriendlyName "Storage Pool Name"

Эта команда выполнит выравнивание. Более подробную информацию вы можете найти по адресу: https://technet.microsoft.com/en-us/library/mt126109.aspx в разделе Storage Spaces Optimize Pool.

Как мне однозначно идентифицировать виртуальную машину Azure даже в том случае, если она деинициализирована, а затем развернута повторно?

Если виртуальная машина в Azure была деинициализирована, то когда она разворачивается повторно, она получает новый глобальный идентификатор GUID, что сильно затрудняет отслеживание виртуальных машин из приложений управления. Чтобы помочь решить эту проблему, Azure присваивает каждой виртуальной машине уникальный универсальный идентификатор UUID, который можно запросить изнутри виртуальной машины, используя следующий код:

$computerSystemProduct = Get-WmiObject -class
   Win32_ComputerSystemProduct -namespace root\CIMV2
‘VM UUID is "{0}"’ -f $computerSystemProduct.UUID

Данное значение сохраняется в SMBIOS виртуальных машин Azure и является долговременным, даже в том случае, если виртуальная машина отключена, а потом вновь подсоединена к инфраструктуре Azure. Обратите внимание, что если вы удаляете виртуальную машину, а потом создаете новую, используя существующие VHD, то универсальный уникальный идентификатор UUID виртуальной машины получит новое значение.

Я выгрузил образ в Azure (с неподдерживаемой операционной системой), но, когда пытаюсь создать из него виртуальную машину, она «зависает» в процессе инициализации. Почему?

Образ в Azure представляет собой файл VHD, который был подготовлен для развертывания. Для Windows это означает, что операционная система была обработана с использованием SYSPREP. Когда Azure разворачивает виртуальную машину, основываясь на шаблоне, как часть процесса инициализации, создается файл ответов, который прикрепляется к виртуальной машине через виртуальный файл DVD ISO. Формат файла ответов формируется для операционных систем, которые поддерживает Azure. Он не будет работать на неподдерживаемых образах, таких как клиентские операционные системы. Вот почему неподдерживаемая операционная система зависает на стадии инициализации: она не может обработать файл ответов, созданный Azure.

Если вам нужно задействовать неподдерживаемую операционную систему в Azure, могу предложить такое решение: не создавайте эту систему в виде образа, который будет использовать файл ответов. Вместо этого создайте операционную систему как обычный диск, который не подвергался обработке SYSPREP и, таким образом, не будет требовать специальной фазы работы с файлом ответов. Вот что нужно сделать:

  1. Выгрузите VHD в Azure.
  2. Пометьте выгруженный VHD как диск и покажите, что он содержит операционную систему.
  3. Создайте виртуальную машину из полученного диска.

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

Я создал новый контроллер домена DC в Azure и указал моей виртуальной сети этот сервер DNS, но теперь не могу попасть на сайты Интернета. Почему?

Если вы настроили свою виртуальную сеть Virtual Network на использование нового DC в Azure как сервера DNS, то важно, чтобы сервер DNS мог на самом деле разрешать имена Интернета, иначе ни одна виртуальная машина в Virtual Network не сможет связываться с компьютерами в Интернете.

Наиболее вероятная причина проблемы состоит в том, что перенаправление данных на DC работает некорректно. Мне часто приходилось наблюдать наличие только корневых ссылок IPv6, которые не будут работать, так как Azure поддерживает исключительно IPv4. Для решения проблемы выполните следующие шаги:

  1. Подсоединитесь к своему DC в Azure.
  2. Запустите DNS Manager.
  3. Правой кнопкой мыши щелкните по имени сервера и выберите в меню пункт Properties.
  4. Убедитесь в отсутствии перенаправления данных (за исключением случаев, когда они нужны вам). Если перенаправления данных нет, то флажок у параметра использования корневых ссылок Use root hints должен быть установлен.
  5. Выберите вкладку Root Hints.
  6. Убедитесь в наличии адресов IPv4. Если их нет, то добавьте корневые ссылки IPv4; стандартные ссылки вы можете найти по адресу https://technet.microsoft.com/en-us/library/ff807391 (v=ws.10).aspx.

Какие возможности предусмотрены в Windows Server 2016 для совместно используемого Shared VHDX?

Тип файла жесткого диска виртуальной машины Shared VHDX был реализован в версии Windows Server 2012 R2. Это файл VHDX, который подсоединен к виртуальной машине через SCSI-контроллер и хранится на диске общего доступа кластера CSV (либо подключенном напрямую, либо с использованием файлового сервера). С его помощью можно подсоединяться к нескольким виртуальным машинам. Эти виртуальные машины видят Shared VHDX как хранилище данных общего доступа, и он может использоваться в качестве хранилища данных кластера для гостевых виртуальных машин. В первоначальном варианте Server 2012 R2 ряд возможностей отсутствовал в связи с тем, что к VHDX получали доступ несколько виртуальных машин одновременно, а это усложняло многие типы дисковых операций. В Windows Server 2016 многие ограничения были устранены. Теперь свойства Shared VHDX включают:

  • динамическое изменение размера (изменение размера во время работы виртуальных машин);
  • резервное копирование на уровне хоста;
  • поддержку Hyper-V Replica.

Единственными функциями, которые сейчас не работают с Shared VHDX в версии 2016, являются контрольные точки и перемещение хранилища данных.

Как выполнить переход между режимами установки в Windows Server 2016?

Вы не можете этого сделать. Возможность поменять режим после установки недоступна в Windows Server 2016, вы жестко задаете режим во время установки.

Как мне просмотреть ресурсы, которые поддерживает менеджер ресурсов Azure Resource Manager?

Самый простой способ увидеть ресурсы, которые поддерживает Azure Resource Manager, — это просмотреть провайдеры данных, используя следующую команду (если только вы работаете в режиме ARM):

Get-AzureProvider

Как показано в приведенном ниже примере, введя команду, вы увидите всех провайдеров и типы поддерживаемых ресурсов.

PS C:\> get-azureprovider
ProviderNamespace RegistrationState ResourceTypes
-----------------   ----------------- -------------
Microsoft.Automation Registered {automationAccounts,   automationAccounts/
  runbooks, operations}
microsoft.backup Registered {BackupVault}
Microsoft.Batch Registered {batchAccounts}
microsoft.cache Registered {Redis,
  checkNameAvailability,
  RedisConfigDefinition,
  Redis/metrics...}
microsoft.classiccompute Registered {domainNames,
  checkDomainName
  Availability,
  domainNames/slots,
  domainNames/slots/roles...}
microsoft.classicnetwork Registered {virtualNetworks,
  reservedIps, quotas,
  gatewaySupportedDevices...}
microsoft.classicstorage Registered {storageAccounts, quotas,
  checkStorageAccount
  Availability,
  storageAccounts/services...}
Microsoft.Compute Registered {availabilitySets,
  virtualMachines,
  virtualMachines/extensions,
  virtualMachines/
  diagnosticSettings...}
microsoft.insights Registered {components, webtests,
  queries, alertrules...}
Microsoft.KeyVault Registered {vaults, vaults/secrets}
Microsoft.Network Registered {virtualNetworks,
  publicIPAddresses,
  networkInterfaces,
  loadBalancers...}
Microsoft. Registered {workspaces,
OperationalInsights  storageInsightConfigs,
  linkTargets, operations}
microsoft.siterecovery Registered {SiteRecoveryVault}
Microsoft.Storage Registered {storageAccounts,
  operations,
  checkNameAvailability,
  storageAccounts/services...}
Microsoft.Web Registered {sites/extensions,
  sites/slots/extensions,
  sites/instances, sites/
  slots/instances...}
Microsoft. Registered {services, configuration,
ADHybridHealthService  agents, reports}
Microsoft.Authorization Registered {roleAssignments,
  roleDefinitions,
  classicAdministrators,
  permissions...}
Microsoft.Features Registered {features, providers}
Microsoft.Resources Registered {subscriptions,
  subscriptions/providers,
  subscriptions/
  operationresults,
  resourceGroups...}
Microsoft.Scheduler Registered {jobcollections,
  operations}
Microsoft.Sql Registered {operations, locations,
  locations/capabilities,
  checkNameAvailability...}
microsoft.visualstudio Registered {account, account/project}

Иногда данные провайдеров устаревают, поэтому, если вы считаете, что типы ресурсов не обновлены, вы можете выполнить принудительное обновление посредством перерегистрации провайдера. Это можно сделать, используя команду:

Register-AzureProvider -ProviderNamespace 

Как мне изменить размер диска Azure?

Поскольку система хранения данных Azure Storage использует разреженную систему хранения данных, это означает следующее: вы платите только за реально записанные данные, а не за размер VHD. Оптимальный метод — создавать диски, объем которых составляет разрешенный максимум 1023 Гбайт (исключение составляет система Azure Premium Storage, в которой плата взимается за размер диска, а не за количество записанных данных). Если у вас есть диски, размер которых вы хотите изменить, вы можете задействовать REST API. Кроме того, вы можете использовать команду Update-AzureDisk. Чаще всего изменение размера диска применяется для дисков операционной системы, которые составляют 127 Гбайт по умолчанию. Иногда они требуют большего размера, но нередко такая необходимость возникает и для обычных дисков данных, чтобы не размещать данные на диске операционной системы. Имейте в виду, что диск, к которому подсоединена виртуальная машина, должен быть отключен и размонтирован.

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

Get-AzureDisk | ft Label, AttachedTo, DiskName -AutoSize

Когда у вас есть реальное имя диска, выполните изменение размера:

Update-AzureDisk -DiskName  -ResizedSizeInGB 200
   -label TinyVMOS

Помните, что новый размер диска должен быть в диапазоне между 20 и 1023 Гбайт. Ниже показан пример изменения размера. Когда размер диска будет изменен, вы сможете расширить или добавить новые тома внутри гостевой операционной системы:

PS C:\> Update-AzureDisk -DiskName
TinyVM-TinyVM-0-201507181508090740 -ResizedSizeInGB
200 -Label TinyVMOS OperationDescription
OperationId OperationStatus
-------------------- --------------------------
Update-AzureDisk a6fa5c9e-2c66-05c3-b0c2-
292694e12aef Succeeded 

Как мне назначить зарезервированный IP-адрес общего доступа Public IP (PIP) конкретной виртуальной машине?

Это невозможно. Зарезервированные IP-адреса общего доступа могут быть назначены только виртуальному IP-адресу Virtual IP (VIP) «облачной» службы в менеджере служб Azure Service Manager (ASM) или балансировщику нагрузки в менеджере ресурсов Аzure Resource Manager (ARM). Адрес Public IP на уровне экземпляра, где IP открытого доступа назначается напрямую виртуальной машине, не поддерживает использование зарезервированного PIP.

Если я активирую минимальное значение для Storage QoS в Windows Server 2012 R2, записываются ли события в журнал?

Да. Если для VHD в Storage QoS определено минимальное значение операций ввода-вывода IOPS, то, когда число операций IOPS для виртуального диска не удовлетворяет условию, событие с ID 32930 записывается в журнал регистрации Hyper-V-VMMS\Admin. В сообщении о событии говорится, что требуемая политика не выполнена. Когда политика будет выполняться, появится запись о событии с ID 32931. Обратите внимание, что никогда не будет записи для максимального значения IOPS, так как Hyper-V всегда может отслеживать максимальное количество операций ввода-вывода посредством задержки их выполнения. Событие записывается в журнал один раз для каждого пула ресурсов, а не для каждого файла VHD.

Сколько устройств я могу использовать с учетной записью Microsoft в Windows 10 Store?

В Windows 10 количество устройств, которые может поддерживать одна учетная запись Microsoft, сейчас составляет 10 для приложений, приобретенных в Windows 10 Store. Их количество снизилось с 81, как было в Windows 8.1, но оно больше, чем исходные 5. О снижении количества устройств просили многие разработчики приложений, поскольку стало распространенной практикой покупать приложение, а затем делиться своей учетной записью Microsoft с друзьями, которые в итоге использовали приложение, но не платили за него.

Как мне конвертировать файл формата VMDK в файл VHD, используя третью версию MVMC?

Когда вы установите MVMC 3.0, вы можете либо конвертировать виртуальные машины, используя графический интерфейс MVMC, либо задействовать PowerShell. Если вы хотите выполнить конвертацию файла VMDK в VHD в автономном режиме, используйте такую команду:

#Download at http://www.microsoft.com/en-us/download/
   details.aspx? id=42497
Import-Module 'C:\Program Files\Microsoft Virtual Machine
   Converter\MvmcCmdlet.psd1'
Get-Command -module mvmccmdlet
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath
   "S:\Templates\Win2012 DC.vmdk» -DestinationLiteralPath
   "C:\ClusterStorage\VMs\Temp" `
-VhdType DynamicHardDisk -VhdFormat Vhdx
#If offline can disable the tools. If was online could uninstall from
   the source VM Uninstall-MvmcSourceVMTools
Disable-MvmcSourceVMTools -DestinationLiteralPath
   "C:\ClusterStorage\VMs\Temp\Win2012 DC.vhdx"

Я запускаю команду Add-AzureAccount, но вижу различные подписки, которые показывают зависимость от того компьютера, на котором я запускаю команду. Как мне настроить этот процесс?

Причина такой ситуации — создание профиля. Чтобы решить проблему, запустите команду:

Clear-AzureProfile

Как мне перезагрузить информацию об устройстве DisplayLink в системе Windows?

Если у вас часто возникают проблемы с DisplayLink, то вам необходимо обновить программное обеспечение DisplayLink. Кроме того, обновление поможет проверить информацию о мониторе. Это можно сделать посредством удаления следующих разделов реестра и перезагрузки системы:

HKEY_LOCAL_MACHINE\SYSTEM\
   CurrentControlSet\Control\GraphicsDrivers\Configuration
HKEY_LOCAL_MACHINE\SYSTEM\
   CurrentControlSet\Control\GraphicsDrivers\Connectivity

Как мне скопировать все содержимое из контейнера учетной записи Azure Storage в другую учетную запись Azure Storage?

Самый простой способ копирования между двумя учетными записями предполагает использование функциональной возможности асинхронного копирования на серверной стороне Azure, которая реализуется в виде команды Start-CopyAzureStorageBlob. Это означает, что все данные пересылаются напрямую между местоположениями Azure, а не через ваше местоположение. Это «интеллектуальная» команда в том смысле, что, даже хотя виртуальный диск VHD и может быть размером в 1 Тбайт, если он содержит 100 Мбайт данных, она будет копировать только 100 Мбайт, что сэкономит ваши затраты на исходящий сетевой трафик.

В листинге 1 представлен мой сценарий PowerShell, который копирует все, что есть в контейнере, в другую учетную запись в системе хранения данных. Копирование можно выполнять через подписки и через регионы. Обратите внимание, что вам нужно заменить переменные в начале сценария на свои имена учетной записи системы хранения данных и ключи учетной записи системы хранения данных (которые можно найти на порталах Azure). Кроме того, вы можете изменить источник и место назначения контейнеров.

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

В листинге 3 представлен пример, где я проверяю статус множество раз (мой исходный контейнер имел шесть файлов).

Обратите внимание, что, хотя мои файлы Data составляли 1 Тбайт, они прошли проверку быстрее, чем диск операционной системы объемом в 127 Гбайт, так как диск операционной системы содержал примерно 20 Гбайт данных, а каждый диск данных имел примерно 50 Мбайт данных.

Существует ли простой способ узнать, что занимает мое дисковое пространство в Windows 10?

В Windows 10 предусмотрена функция проверки системы хранения данных Storage Sense, которая впервые стала доступна в Windows Phone. Эта функция позволяла посмотреть, как используется дисковое пространство. Чтобы получить доступ к ней, выполните следующие действия:

  1. Откройте Settings (Start — Settings).
  2. Выберите System.
  3. Выберите Storage.
  4. Выберите диск, сведения о котором вы хотите получить.
  5. Будет показано распределение пространства при хранении данных с разбивкой по типу данных (см. экран 1).

 

Распределение пространства при хранении данных
Экран 1. Распределение пространства при хранении данных

Каковы основные обновления для командной консоли в Windows 10?

В Windows 10 реализована новая командная консоль, которая используется и как командная строка, и как PowerShell. Эта консоль имеет ряд новых возможностей, которые описаны в документе http://blogs.windows.com/buildingapps/2014/10/07/console-improvements-in-the-windows-10-technical-preview/. Консоль активируется по умолчанию, но может быть заблокирована и заменена старой консолью, если понадобится (это требует перезагрузки окна командной строки) (см. экран 2).

 

Параметры окна командной строки
Экран 2. Параметры окна командной строки

Вот некоторые из свойств.

  • Прозрачность при использовании комбинации CTRL + SHIFT + (плюс/минус или прокрутка мыши) или указании на вкладке в свойствах консоли посредством ползунка Opacity (см. экран 3).
  • Автоматическое масштабирование разрешения окна при использовании шрифта TrueType для экрана.
  • Поддержка динамического изменения размера окон; это означает, что, как только изменяется размер окна, соответственно меняется размер его содержимого.
  • Автоматический перенос текста на новую строку, полезная возможность при динамическом изменении размера.
  • Простой выбор текста и редактирование.

 

Прозрачное окно командной строки
Экран 3. Прозрачное окно командной строки
Листинг 1. Копирование из одной учетной записи в другую
#Server side storage copy
                              $SourceStorageAccount = "storageaccount1"
                              $SourceStorageKey = "yourKey1=="
                              $DestStorageAccount = "storageaccount2"
                              $DestStorageKey = "yourKey2=="
                              $SourceStorageContainer = 'vhds'
                              $DestStorageContainer = 'vhds'
                              $SourceStorageContext = New-AzureStorageContext
                              -StorageAccountName $SourceStorageAccount
                              -StorageAccountKey $SourceStorageKey
                              $DestStorageContext = New-AzureStorageContext
                              -StorageAccountName $DestStorageAccount
                              -StorageAccountKey $DestStorageKey
                              $Blobs = Get-AzureStorageBlob -Context
                              $SourceStorageContext -Container
                              $SourceStorageContainer
                              $BlobCpyAry = @() #Create array of objects
                              #Do the copy of everything
                              foreach ($Blob in $Blobs)
                              {
                                 Write-Output "Moving $Blob.Name"
                                 $BlobCopy = Start-CopyAzureStorageBlob
                              -Context $SourceStorageContext -SrcContainer
                              $SourceStorageContainer -SrcBlob $Blob.Name `
                                    -DestContext $DestStorageContext
                                    -DestContainer $DestStorageContainer
                                    -DestBlob $Blob.Name
                                 $BlobCpyAry += $BlobCopy
                              }
                             
                              #Check Status
                              foreach ($BlobCopy in $BlobCpyAry)
                              {
                                 #Could ignore all rest and just run $BlobCopy |
                                 Get-AzureStorageBlobCopyState but I prefer
                                 output with % copied
                                 $CopyState = $BlobCopy |
                                 Get-AzureStorageBlobCopyState
                                 $Message = $CopyState.Source.AbsolutePath +
                                 " " + $CopyState.Status + " {0:N2}%" -f
                                 (($CopyState.BytesCopied/
                                 $CopyState.TotalBytes)*100)
                                 Write-Output $Message
                              }
Листинг 2. Проверка состояния копирования
#Check Status
                              foreach ($BlobCopy in $BlobCpyAry)
                              {
                                 #Could ignore all rest and just run $BlobCopy |
                                 Get-AzureStorageBlobCopyState but I prefer
                                 output with % copied
                                 $CopyState = $BlobCopy |
                                 Get-AzureStorageBlobCopyState
                                 $Message = $CopyState.Source.
                                 AbsolutePath + " " + $CopyState.Status +
                                 " {0:N2}%" -f (($CopyState.BytesCopied/
                                 $CopyState.TotalBytes)*100)
                                 Write-Output $Message
                              }
Листинг 3. Проверка контейнера
Moving Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.AzureStorageBlob.Name
Moving Microsoft.WindowsAzure.Commands.Storage.
  Model.ResourceModel.AzureStorageBlob.Name
Moving Microsoft.WindowsAzure.Commands.Storage.
  Model.ResourceModel.AzureStorageBlob.Name
Moving Microsoft.WindowsAzure.Commands.Storage.
  Model.ResourceModel.AzureStorageBlob.Name
Moving Microsoft.WindowsAzure.Commands.Storage.
  Model.ResourceModel.AzureStorageBlob.Name
Moving Microsoft.WindowsAzure.Commands.Storage.
  Model.ResourceModel.AzureStorageBlob.Name

/vhds/Minecraft-20150417-083952.vhd Pending 0.00%
/vhds/Minecraft-Data2.vhd Pending 0.00%
/vhds/Minecraft-Data3.vhd Pending 0.00%
/vhds/Minecraft-Data4.vhd Pending 0.06%
/vhds/Minecraft-Savill-Minecraft-os-1429277175051.vhd
  Pending 0.00%
/vhds/Minecraft-Savill.Minecraft-Savill.Minecraft.status
  Success 100.00%

/vhds/Minecraft-20150417-083952.vhd Pending 0.16%
/vhds/Minecraft-Data2.vhd Pending 0.16%
/vhds/Minecraft-Data3.vhd Pending 0.16%
/vhds/Minecraft-Data4.vhd Pending 12.60%
/vhds/Minecraft-Savill-Minecraft-os-1429277175051.vhd
  Pending 0.44%
/vhds/Minecraft-Savill.Minecraft-Savill.Minecraft.status
  Success 100.00%

/vhds/Minecraft-20150417-083952.vhd Success 100.00%
/vhds/Minecraft-Data2.vhd Success 100.00%
/vhds/Minecraft-Data3.vhd Success 100.00%
/vhds/Minecraft-Data4.vhd Success 100.00%
/vhds/Minecraft-Savill-Minecraft-os-1429277175051.
  vhd Pending 1.37%
/vhds/Minecraft-Savill.Minecraft-Savill.Minecraft.status
  Success 100.00%

/vhds/Minecraft-20150417-083952.vhd Success 100.00%
/vhds/Minecraft-Data2.vhd Success 100.00%
/vhds/Minecraft-Data3.vhd Success 100.00%
/vhds/Minecraft-Data4.vhd Success 100.00%
/vhds/Minecraft-Savill-Minecraft-os-1429277175051.
  vhd Pending 100.00%
/vhds/Minecraft-Savill.Minecraft-Savill.Minecraft.status
  Success 100.00%