2017-09-02 3 views
11

ローカリゼーションファイルを使用するほぼすべてのMicrosoftプロジェクトには、リソース文字列のブロックの前後にテキスト###PSLOC があります。次に例を示します。### PSLOCはPSD1ローカリゼーションファイルで表します

ConvertFrom-StringData @' 
###PSLOC 
MyString=This is a string. 
###PSLOC 
'@ 

Here is an examplePowerShellGetレポから。

ヘルプファイルのいずれも参照できません。私はabout_Data_SectionsConvertFrom-StringDataおよびabout_Script_Internationalizationを調べました。 のインスタンスが にあるPowerShellのソースは、上記のようなリソースファイルです。

具体的には、私が知ってみたい:

  1. それは有無はPowerShellのエンジンを教えて何をしていない
  2. は好ましくはまたPowerShellの源にそれが
+0

PoShコードではいつも '# 'はコメントを表しています。 – LotPings

+1

@LotPings必ずしもそうではない、例えば '宣言'が必要です。私はこれが単なるコメントではないと思っています。そうであれば、私はそれが何を伝えようとしているのか不思議です。 –

+0

さえも、以前のPowerShellのバージョンに干渉しないようにするために、コメントにラップされたり隠されたりしています。 IMO '### PSLOC'はオートマトンからの残党です。 – LotPings

答えて

3

###PSLOCは、Windowsのビルド時に内部ローカリゼーションツールで使用されます。このコメントはPowerShellエンジンにとって特別なものではありません。

ローカリゼーションツールは、多くの異なるファイルパーサーをサポートして、さらなるローカライズ処理のためのリソースを抽出するために拡張可能です。

PowerShellの拡張機能は、iniファイルパーサーに基づいており、コメントはパーザに行を無視するタイミングを伝えるために使用されます。これにより、psd1ファイルの作成者は適切なPowerShellを混在させることができ、iniファイルパーサーは問題にならないでしょう。

+0

素晴らしいです、それは完全にそれをクリアします。ありがとう、ジェイソン! –

5

を処理している場合、私は持っていますしばらく調べて、###PSLOCであり、公式文書を見つけることができなかったとしても特別な意味はないと結論付けました。

この結論に至ったいくつかのMicrosoftドキュメントが見つかりました。例えば:「マイクロソフトベースライン構成アナライザモデル作成ガイド」は、20ページのこのサンプルを示しています。コンテンツファイルの

サンプル
次は、ウイルス対策モデルのコンテンツファイルの例です:Antivirus.psd1

# Only add new (name,value) pairs to the end of this table 
    # Do not remove, insert or re-arrange entries 
    ConvertFrom-StringData @' 
    ###PSLOC start localizing 
    # 
    # helpID="ScanBootSector" 
    # 
    ScanBootSector_title = Boot Sector Scan (Indicator Setting {0}) 
    ScanBootSector_problem = tbd: Problem for Constant name issue-1 
    ScanBootSector_impact = tbd: Impact for Constant name issue-1 
    ScanBootSector_resolution = tbd: Resolution for Constant name issue-1 
    ScanBootSector_compliant = tbd: Compliant for Constant name issue-1 
    # 
    # helpID="AutoUpdateStatus" 
    # 
    AutoUpdateStatus_title = Auto Update Status (Indicator Setting {0}) 
    AutoUpdateStatus_problem = tbd: Problem for Constant name issue-2 
    AutoUpdateStatus_impact = tbd: Impact for Constant name issue-2 
    AutoUpdateStatus_resolution = tbd: Resolution for Constant name issue-2 
    AutoUpdateStatus_compliant = tbd: Compliant for Constant name issue-2 
    '@ 

###PSLOCは、追加の説明や、より簡単なコメントが続き、何の終値###PSLOCがないことに注意してください。

Bryan P. Cafferkyによる "Pro PowerShell for Database Developers"の書籍は、p。 140###PSLOCブロック/タグをまったく含まないConvertFrom-StringDataセクション。

別のヒントは、私自身のWindows 10システムに由来します。
私はすべての* .psd1ファイルを覆い、いくつかは適切な閉鎖###PSLOC -block/tagではなく、###PSCLOCCのinseadを持っていることを知りました。 c:\ windows \ WinSxS \ amd64_microsoft-windows-pnpdevice-powershell_31bf3856ad364e35_10.0.15063.0_none_e99b05a055a1e6c4 \ PnpDevice.Resource.psd1(これもバグかもしれません)

最後に、Powershell(コア)レポを検索しましたが、###PSLOCの処理は見つかりませんでした。

したがって、このケースは100%明確ではありません。しかし間違いなく私は特別な意味がないという良い証拠を見つけました。

関連する問題