Я использую Powershell и пытаюсь получить размер и доступное пространство ресурса физического диска.
Я хочу, чтобы этот код работал на одном компьютере с Windows Server 2008 R2 (сервере мониторинга) и опрашивал ресурсы на трех удаленных кластерах в одном домене. 2 кластера также работают под управлением Windows Server 2008 R2, но один работает под управлением Windows Server 2012 (x64). Возвращенные данные будут вставлены в базу данных как часть приложения для мониторинга.
В настоящее время код, который я использую:
$clusters = "cluster1.domain.local","cluster2.domain.local","cluster3.domain.local"
foreach ( $cluster in $clusters) {
$resources = Get-ClusterResource -Cluster $cluster | where-object {$_.ResourceType -match "Physical Disk"}
foreach ( $resource in $resources) {
$details = Get-ClusterResource -Cluster $cluster -Name $resource.Name | fc *
<how to get disk size & space from $details?>
}
}
Данные, возвращаемые «Get-ClusterResource | fc *», не включают размер физического диска или свободное пространство, и я не могу понять, как получить эту информацию. Возвращаемая информация является общей для всех ресурсов кластера — пример можно увидеть здесь а> (пример 2). Пример 3 ниже был почти полезен, но не включает размер диска или свободное пространство.
Я проверил этот вопрос, но ответ использует запросы WMI, и когда я пытаюсь это сделать, я сталкиваюсь со всевозможными проблемами безопасности и совместимости. Я бы предпочел, если это возможно, придерживаться простого PowerShell, тем более что приложение для мониторинга также использует чистый PowerShell для проверки размеров почтовых ящиков Exchange и невыполненных операций репликации DFS.
Обратите внимание, что я не пытаюсь запрашивать общие тома кластера — у них есть свои собственные отдельные функции PowerShell, и у меня это работает без проблем. Я не могу заставить его работать специально для ресурсов физического диска.
Я понимаю, что физические диски являются одним из многих типов ресурсов, поэтому универсальная команда Get-ClusterResource не вернет ничего конкретного для диска, но я надеялся на другую функцию, которую я мог бы вызвать, передав возвращаемое значение Get-ClusterResource, для получения место на диске/свободное место
Любая помощь будет оценена, спасибо
Сэм
Обновления для Ансгара Вихерса
Какова ваша цель? Как уже было указано, для создания серии сценариев powershell «сборщика данных», которые собирают данные из нескольких систем, требующих мониторинга, и вводят эти данные в базу данных, которая будет предоставлять предупреждения, сохранять историю и в целом улучшать наши возможности мониторинга. Наш текущий набор инструментов мониторинга покрывает 90% того, что нам нужно, но просто упускает несколько мелочей, которые я надеюсь исправить с помощью этого метода.
Почему вам нужны параметры физического диска вместо параметров CSV? Потому что CSV — не единственный тип дисков, используемых в кластере. Например, у нас есть кластер SQL с 2 серверами, 7 экземплярами и 31 томом. ОБЯЗАТЕЛЬНО контролировать свободное дисковое пространство на всех томах по причинам, которые я считаю очевидными. Этот мониторинг в настоящее время выполняется вручную и не сохраняет исторические данные.
Из каких физических дисков? Какие я укажу. Идеальным решением была бы возможность мониторинга любого используемого (т.е. не «доступного») дискового ресурса кластера. Я не собираюсь отслеживать «бесполезные» диски, такие как том DTC в нашем кластере SQL или тома Quorum, но нет никаких причин, по которым я не могу их контролировать, если захочу.
И почему вы хотите получать эту информацию через кластер, а не отслеживать информацию о физических дисках членов кластера? Хотя часть этой информации можно получить через SNMP MIB, эту информацию гораздо сложнее получить, интерпретировать и преобразовать. Я могу подробно рассказать об этом, но это отвлечет внимание от вопроса, достаточно сказать, что Powershell — мой предпочтительный метод.