Таблица перевода WMIC - PullRequest
       62

Таблица перевода WMIC

0 голосов
/ 01 июня 2018

Где я могу получить документацию о таблицах перевода, используемых в WMIC /TRANSLATE switch?Как я обнаружил, есть только две таблицы, поставляемые с WMIC: BasicXml и NoComma.Как я могу управлять таблицами: перечислять их, просматривать, добавлять, удалять, переименовывать?Какой формат у них есть?Я полагаю, когда я использую таблицы, есть только правила замены одного символа.Или могут применяться другие правила?

1 Ответ

0 голосов
/ 07 июля 2018

Эти таблицы перевода происходят из классов MSFT_CliTranslateTable и MSFT_CliTranslateTableEntry.Они определены (и плохо документированы) в файле C:\Windows\System32\wbem\cli.mof.

…
[Abstract] 
class MSFT_CliTranslateTableEntry
{
  string FromValue;
  string ToValue;
};

class MSFT_CliTranslateTable
{
  [key] string Name;
  MSFT_CliTranslateTableEntry Tbl[];
};
…

Пример с использованием wmic:

==> wmic /NAMESPACE:\\root\cli PATH MSFT_CliTranslateTable get
Name                                                                                     
NoComma                                                                                  
              {}  2    MSFT_CliTranslateTableEntry    MSFT_CliTranslateTableEntry  2  ,  
BasicXml                                                                                 
              {}  2    MSFT_CliTranslateTableEntry    MSFT_CliTranslateTableEntry  2  >  >
              {}  2    MSFT_CliTranslateTableEntry    MSFT_CliTranslateTableEntry  2  &lt;  <

Другой пример с использованием wmic:

==> wmic /NAMESPACE:\\root\cli PATH MSFT_CliTranslateTable get /Value | findstr "^$ Name __CLASS FromValue ToValue"

Name=NoComma

__CLASS=MSFT_CliTranslateTableEntry
FromValue=,
ToValue=

Name=BasicXml

__CLASS=MSFT_CliTranslateTableEntry
FromValue=&amp;gt;
ToValue=&gt;

__CLASS=MSFT_CliTranslateTableEntry
FromValue=&amp;lt;
ToValue=&lt;

Дополнительный пример с использованием powershell:

PS D:\PShell> 
$comp      = $env:COMPUTERNAME
$namespace = "ROOT\Cli"
$classname = "MSFT_CliTranslateTable"

$instances = Get-WmiObject -Class $classname -ComputerName $comp -Namespace $namespace

$instances |
  ForEach-Object { $_ |
    Select-Object -Property @{N='RELPATH';     E={$_.__RELPATH}}, 
                            @{N='TrTableName'; E={$_.Name}} -ExpandProperty Tbl
  } | Format-Table -Property TrTableName, FromValue, ToValue, __CLASS #, RELPATH

Вывод :

TrTableName FromValue ToValue __CLASS                    
----------- --------- ------- -------                    
NoComma     ,                 MSFT_CliTranslateTableEntry
BasicXml    &gt;      >       MSFT_CliTranslateTableEntry
BasicXml    &lt;      <       MSFT_CliTranslateTableEntry
...