Jak wyprowadzić 2 polecenia w 1 pliku tekstowym w PowerShell


1

Pozdrawiam wszystkich,

Przeglądam pytania i odpowiedzi, ale nie mogę znaleźć na to sposobu. Zasadniczo chciałem uzyskać wynik 2 składni w 1 pliku tekstowym.

oto część XML:

<JOB PRO_JOB="D6C1608493" XMLMODE="REPORT">

<SAMPLE CUID="0001347496" SAMPLETYPE="OTHER" SAMPLEIDENT="1608493-2" SAMPLETIME="18/09/2016 2300">

    <SCHEME SCH_CODE="/CSA" SCHEMETYPE="ANALYS">


        <ANALYTE ANALYTECODE="S" ANALYTENAME="S" TAG="FEED1" NUMERICVALUE="1.019999980926514" ROUNDEDVALUE="1.02">
        </ANALYTE>
        </SCHEME>
</SAMPLE>

Więc kiedy próbuję wykonać polecenie w PowerShell: $doc.job.sample.scheme.analytedaje mi wynik dla Analyte, co jest w porządku, ale chcę również uzyskać wynik, aby uzyskać wynik polecenia $doc .job.samplew 1 wyjściowym pliku tekstowym. był w stanie go wypisać, ale tylko za pomocą 1 polecenia.

pytanie poboczne: w jaki sposób mogę wyświetlić tylko wartość SAMPLETIME podczas wykonywania $doc1.job.sample?

Odpowiedzi:


1

Wygląda na to, że brakuje tagu zamykającego <JOB>, więc zakładam, że jest on na końcu dokumentu. Zakładam również, że ładujesz XML w podobny sposób:

$doc = [xml](Get-Content '.\samples.xml')

Zgaduję, że sposób, w jaki wyprowadzasz informacje do pliku, to operator przekierowania >. Jak zapewne odkryłeś, to wysadzi wszelką istniejącą zawartość pliku docelowego. Możesz jednak dołączyć do pliku za pomocą >>. Dlatego możesz zrobić coś takiego:

$doc.JOB.SAMPLE.SCHEME.ANALYTE > outfile.txt
$doc.JOB.SAMPLE >> outfile.txt

Jeśli chcesz uzyskać wartość atrybutu, możesz po prostu traktować ten atrybut jako kolejny obiekt podrzędny na obiekcie elementu będącego właścicielem. Wyświetla to, co chcesz na ekranie; możesz go odpowiednio przekierować:

$doc.JOB.SAMPLE.SAMPLETIME

Dziękujemy, masz rację, brakuje na końcu </Job>. Poza tym twoje rozwiązanie jest chyba bardziej eleganckie i proste. bo próbowałem to zrobić: PS C: \> $ doc.job.sample [0] | Plik wyjściowy C: \ xml \ test.txt {ascii} PS C: \> $ doc.job.sample.scheme.analyte | Plik wyjściowy C: \ xml \ test.txt {ascii} -append -force. dzięki Ben N
Leo

Cześć Ben, próbowałem $ doc.JOB.SAMPLE.SAMPLETIME, ale dał mi tylko wartość, czy można uzyskać nazwę „SAMPLETIME: Value”?
Leo

@Leo Tak, możesz łączyć dowolne wartości z wartością. 'SAMPLETIME : ' + $doc.JOB.SAMPLE.SAMPLETIMEpowinien wykonać pracę.
Ben N
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.