Лучший отвечающий
Создание кастомного класса WMI

Вопрос
-
Всем привет!
я к Вам с вопросом:
пытаюсь создать кастомный класс 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Отвечающий
Все ответы
-
P.S. ISE запускал Run as Administrator18 января 2017 г. 7:41
-
$result1 не содержит пользователя ptg. Так что проверять вывод $result1 на корректность данных.
- Помечено в качестве ответа Igor3000 18 января 2017 г. 8:50
18 января 2017 г. 8:27Отвечающий -
Спасибо большое!
Протупил!
18 января 2017 г. 8:50