2016-08-08 2 views
1

몇 가지 작업을 실행하기위한 간단한 메뉴가 있습니다.이 메뉴는 xml 구성을 통해 변수를 읽습니다.Powershell에서 XML로 두 개의 열로 출력하는 방법

  1. 앱 하나가이 같이 화면에 출력한다 순간

    .

  2. 응용 프로그램 2.
  3. 응용 프로그램 3.
  4. App Four.

내가 (때문에 메뉴를 더 얻기에) 같은 출력을하고 싶습니다 그러나 :

  1. 앱 하나. 3. App Three.
  2. 응용 프로그램 2. 4. App Four.

이 코드를 살펴보고 위의 코드를 구현하는 방법에 대해 조언 해 줄 수 있습니까?

[xml][email protected]" 
<?xml version="1.0"?> 
<Menu> 
    <Head> 
    Dashboard 
    </Head> 
    <Actions> 
     <Id> 
      <Option>1</Option> 
      <Description>App One</Description> 
     </Id> 
     <Id> 
      <Option>2</Option> 
      <Description>App Two</Description> 
     </Id> 
     <Id> 
      <Option>3</Option> 
      <Description>App Three</Description> 
     </Id> 
     <Id> 
      <Option>4</Option> 
      <Description>App Four</Description> 
     </Id> 
    </Actions> 
</Menu> 
"@ 

    foreach ($Item in @($Config.Menu.Actions.Id)) 
    { 
     Write-Host ("{0}.`t{1}." -f $Item.Option,$Item.Description)} 

어쩌면 split/regex를 사용해야합니까?

+0

사용 '형식 - Wide' –

답변

0

다음 코드는 항목 수가 짝수이면 메뉴 문자열에 줄 바꿈 문자 (`n)를 추가합니다. 메뉴의 각 행에 두 개의 항목이 있음을 의미합니다. 한 세트의 크기에 열을 포맷 할 수 있습니다 -f를 사용

$c = 1 
$menu = "" 

foreach ($Item in @($Config.Menu.Actions.Id)) { 

    $menu += ("{0,2}.`t{1,10}." -f $Item.Option,$Item.Description) 
    If($c % 2 -eq 0){$menu +="`n"} 

    $c++ 
} 

Write-Host $menu 

는 다음과 같은 형식 $Item.Option 10 개 문자의 폭을 갖도록 2 폭과 $Item.Description을합니다. 탭이 두 열 사이가되도록

"{0,2}.`t{1,10}." -f $Item.Option,$Item.Description 
+0

안녕하세요, 작업 덕분 않는, 그냥 그것을 조금 더 좋은 포맷이 필요하거나 약간 깔끔한을 정렬? – Ralluhb

+0

감사합니다. 솔루션이 작동합니다! – Ralluhb

관련 문제