Как получить информацию о файле пакета управления из SCOM?

Я использую модуль OperationsManager для работы с SCOM, мне нужно найти информацию о файле somemanagementpack.mpb из SCOM, которая уже импортирована в SCOM, а затем удалить тот же файл somemanagementpack.mpb локально на основе версии

Ниже приведена команда, которую я использую

      Import-Module "OperationsManager"
New-SCOMManagementGroupConnection -ComputerName "DEVSCOM"
$mp = Get-SCManagementPack -BundleFile C:\Temp\somemanagementpack.mpb

$version = $mp.Version
$localVersion = "1.0.0.0"

if($version -gt $localVersion)
{
    Remove-Item "C:\Temp\somemanagementpack.mpb" -Force
}

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

Действие не может быть выполнено, так как файл открыт

1 ответ

SCOM блокирует файл. Единственный способ остановить его — убить процесс PowerShell.

В качестве обходного пути я рекомендую сначала сделать копию каждого файла в другой каталог. Пусть ваш скрипт получит версию из копии. Затем удалите исходный файл, который не будет заблокирован, если он соответствует вашим критериям. После того, как вы закончите, закройте окно PowerShell и удалите каталог со всеми скопированными файлами.

          Import-Module "OperationsManager"
    New-SCOMManagementGroupConnection -ComputerName "DEVSCOM"
    Copy-Item C:\Temp\somemanagementpack.mpb C:\Temp\Copy\somemanagementpack.mpb

    $mp = Get-SCManagementPack -BundleFile C:\Temp\Copy\somemanagementpack.mpb

    $version = $mp.Version

    $localVersion = "1.0.0.0"

    if($version -gt $localVersion)
    {
    Remove-Item "C:\Temp\somemanagementpack.mpb" -Force
    }

Как видите, блокируется только копия.

Другие вопросы по тегам