Как получить информацию о файле пакета управления из 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
}
Как видите, блокируется только копия.