none
Создание кастомного класса WMI RRS feed

  • Вопрос

  • Всем привет!

    я к Вам с вопросом:

    пытаюсь создать кастомный класс wmi вот таким вот скриптом:

                    

    function ConvertTo-Encoding ([string]$From, [string]$To){   
        Begin{   
            $encFrom = [System.Text.Encoding]::GetEncoding($from)   
            $encTo = [System.Text.Encoding]::GetEncoding($to)   
        }   
        Process{   
            $bytes = $encTo.GetBytes($_)   
            $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)   
            $encTo.GetString($bytes)   
        }   
    }

    #create directory Adminlogs
    if ((Test-Path c:\Adminlogs) -eq $false) 
    {
        New-Item -Path C:\Adminlogs -ItemType directory
    }

    #-------------------------------------
    Try {
    $server = [Environment]::MachineName
    $wmiobject = [WMICLASS]"\\$server\ROOT\cimv2:Win32_TasksWithUser"
    $wmiobject.Delete()
    }
    catch [System.Exception] {
        $Error | out-file c:\Adminlogs\TaskWmi.txt -append
    }
    $newClass = New-Object System.Management.ManagementClass ("root\cimv2", [String]::Empty, $null)

    $newClass["__CLASS"] = "Win32_TasksWithUser"

    $newClass.Qualifiers.Add("Static", $true)
    $newClass.Properties.Add("TaskName", [System.Management.CimType]::String, $false)
    $newClass.Properties["TaskName"].Qualifiers.Add("Key", $true)
    $newClass.Properties.Add("TaskToRun", [System.Management.CimType]::String, $false)
    $newClass.Properties["TaskToRun"].Qualifiers.Add("Key", $true)
    $newClass.Properties.Add("RunAsUser", [System.Management.CimType]::String, $false)
    $newClass.Properties["RunAsUser"].Qualifiers.Add("Key", $true)
    $newClass.Put()
    #---------------------------------

    $schtaskscsv = schtasks /query /fo csv /v

    if ((Get-UICulture).LCID -match "1049")
    {
    $schtaskscsv = $schtaskscsv | ConvertTo-Encoding cp866 windows-1251
    $schtasks =  $schtaskscsv | ConvertFrom-Csv
    $result1 = $schtasks | select @{Name="TaskName"; Expression = {$_."Имя задачи"}}, @{Name="Task To Run"; Expression = {$_."Задача для выполнения"}}, @{Name="Run As User"; Expression = {$_."Запуск от имени"}}
    }
    else
    {
    $schtasks =  $schtaskscsv | ConvertFrom-Csv
    $result1 = $schtasks | select "TaskName", "Task To Run", "Run As User"
    }

    $result1 | where {$_."Run As User" -match "ptg"} | foreach {

    #аdd in wmi

            $wmiobject = [WMICLASS]"\\$server\ROOT\cimv2:Win32_TasksWithUser"

            $wmiobjectnew = $wmiobject.CreateInstance()
            $wmiobjectnew.TaskName = $_."TaskName"
            $wmiobjectnew.TaskToRun = $_."Task To Run"
            $wmiobjectnew.RunAsUser = $_."Run As User"
            $wmiobjectnew.put()

    }
    return 0

    но получаю ошибку в файле C:\Adminlogs\taskwmi.txt:

    Cannot convert value "\\TS-HV1\ROOT\cimv2:Win32_TasksWithUser" to type "System.Management.ManagementClass". Error: "Not found "
    At line:22 char:1
    + $wmiobject = [WMICLASS]"\\$server\ROOT\cimv2:Win32_TasksWithUser"
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvalidCastToWMIClass

    в Powershell ISE выдаёт:

    Directory: C:\


    Mode                LastWriteTime     Length Name                                                                                                                                                           
    ----                -------------     ------ ----                                                                                                                                                           
    d----        18.01.2017      9:30            Adminlogs                                                                                                                                                      

    Path          : \\.\root\cimv2:Win32_TasksWithUser
    RelativePath  : Win32_TasksWithUser
    Server        : .
    NamespacePath : root\cimv2
    ClassName     : Win32_TasksWithUser
    IsClass       : True
    IsInstance    : False
    IsSingleton   : False

    0

    пытаюсь проверить Get-WmiObject Win32_TasksWithUser - но ничего не выводит.

    Подскажите где ошибка?

    Всем спасибо!

    18 января 2017 г. 7:37

Ответы

  •   $result1 не содержит пользователя ptg. Так что  проверять вывод $result1 на корректность данных.
    • Помечено в качестве ответа Igor3000 18 января 2017 г. 8:50
    18 января 2017 г. 8:27
    Отвечающий

Все ответы