PowerShell Core Настройка принтера онлайн - PullRequest
1 голос
/ 04 апреля 2020

Я использую немного PowerShell, чтобы вернуть все принтеры в рабочее состояние:

Get-WMIObject -Class win32_printer | ForEach-Object {$_.WorkOffline = $false;$_.Put()}

Однако в PowerShell Core это не работает, поскольку Get-WMIObject устарела. Но следующие жалобы из-за использования Put():

Get-CimInstance -Class win32_printer | ForEach-Object {$_.WorkOffline = $false;$_.Put()}

Похоже, Invoke-CimMethod ответ, но я не могу понять, как его использовать?

1 Ответ

0 голосов
/ 04 апреля 2020

Вы говорите, что файлы справки не дают вам то, что вам нужно?

Invoke-CimMethod

# Get specifics for a module, cmdlet, or function
(Get-Help -Name Invoke-CimMethod).Parameters
(Get-Help -Name Invoke-CimMethod).Parameters.Keys
<#
# Results

ClassName
ResourceUri
CimClass
Query
QueryDialect
InputObject
ComputerName
CimSession
Arguments
MethodName
Namespace
OperationTimeoutSec
Verbose
Debug
ErrorAction
WarningAction
InformationAction
ErrorVariable
WarningVariable
InformationVariable
OutVariable
OutBuffer
PipelineVariable
WhatIf
Confirm
#>

Get-Help -Name Invoke-CimMethod -Examples
    # Results

    Invoke-CimMethod –Query ꞌselect * from Win32_Process where name like "notepad%"ꞌ –MethodName "Terminate"


    $x = Get-CimInstance -Query ꞌSelect * from Win32_Process where name like "notepad%"ꞌ
    Invoke-CimMethod -InputObject $x -MethodName "GetOwner"

    Invoke-CimMethod –ClassName Win32_Process –MethodName "Create" –Arguments @{ Path = "notepad.exe" }


    Invoke-CimMethod -ClassName Win32_Process -MethodName "Create" -Arguments @{ CommandLine = ꞌnotepad.exeꞌ; CurrentDirectory = "C:\windows\system32" }


    $c = Get-CimClass –ClassName Win32_Process
    Invoke-CimMethod -CimClass $c -MethodName "xyz" –Arguments @{ CommandLine = ꞌnotepad.exeꞌ }


Get-Help -Name Invoke-CimMethod -Full
Get-Help -Name Invoke-CimMethod -Online

Итак, все вещи, рассмотренные выше. Попробуйте что-то вроде (это не проверено, так как у меня нет среды для проверки)

Invoke-CimMethod -MethodName Put -InputObject (
    Get-CimONstance -Class win32_printer | 
    ForEach-Object {$PSItem.WorkOffline = $false}
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...