Centrum skryptów - Systemy operacyjne

Jak mogę zwiększyć szerokość konsoli Powershell Windows?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak mogę zwiększyć szerokość konsoli PowerShell?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak mogę zwiększyć szerokość konsoli PowerShell? Gdy wyświetlam pewne typy danych - jak informacje z dzienników zdarzeń - dane są obcinane, ponieważ okno konsoli nie jest wystarczająco szerokie.

-- TB

Cześć Skrypciarze! Odpowiedź

Hej, TB. Co za zbieg okoliczności: właśnie mieliśmy spytać Ciebie dokładnie o to samo! Co teraz zrobimy?

Żartuję tylko, Skrypciarze nigdy nie proszą nikogo o pomoc. Nie, żebyśmy nie potrzebowali pomocy, to nie tak. Po prostu, gdy pracujesz w Microsofcie, szybko uczysz się nie pytać o nic.

Czy to dlatego, że można dostać złą odpowiedź? Chcielibyśmy, w końcu zła odpowiedź to zawsze jakaś odpowiedź. Nie, zadaj pytanie komuś z Microsoftu, to zamiast odpowiedzieć, zorganizuje zebranie, żeby omówić problem. Po kolei, wróci do swojego biura, poinformuje swojego menedżera i Twojego menedżera (i wszystkich menedżereów menedżerów, a również ich menedżerów) o pytaniu, a potem zaprosi rozlicznych "kluczowych zainteresowanych" do udziału w tym nagle kluczowym zebraniu.

Które, skądinąd, często zostanie zaplanowane na tak absurdalną porę jak 18:00. (Kto to diabła chce być w pracy o 18?) I oczywiście, nikt po prostu nie zaplanuje spotkania. O nie, zamiast tego wszystkim zostanie rozesłany "Sched+". Sched+ będzie odsyłaczem do produktu Microsoftu (Schedule+), który był używany ostatni raz w 1847 roku, ale wciąż jeszcze pokutuje wspomnienie o nim.

Uwaga:. Dobre pytanie: Co to takiego ten kluczowy zainteresowany? Na ile się orientujemy, jeśli zgadzasz się wziąć udział w zebraniu, ale nie zawracasz sobie głowy pojawieniem się na nim, to jesteś kluczowym zainteresowanym. A ponieważ decyzja nie może zostać podjęta pod nieobecność kluczowych zainteresowanych, ich nieunikniona nieobecność oznacza, że zawsze będzie kolejne spotkanie. Pamiętacie grecki mit o Syzyfie, skazanym na wtaczanie kamienia na wzgórze przez wieczność, i to jak tuż przed szczytem kamień stacza się po nim na dół, zmuszając go do zaczęcia od nowa? Biuro Syzyfa mieści się w tym samym korytarzu, co biuro Skrypciarza piszącego tę rubrykę.

Po kilkukrotnym przekładaniu terminu spotkania, po przeprowadzkach do kilku różnych sal konferencyjnych, w końcu wszyscy się zbierają, a w planie spotkania jest tylko jeden punkt: powinniśmy kontynuować i zaplanować kolejne spotkanie, czy nie? Po kilku takich falstartach, w końcu tworzymy "wirtualny zespół", który przydziela "elementy działań" kluczowym zainteresowanym. (Sporo cudzysłowów używamy w Microsofcie, nie?) Przez kolejnych kilka miesięcy obmyślamy reguły i procedury najlepszego podejścia do pytania. I wtedy, tuż przed osiągnięciem gotowości do odpowiedzi, decydujemy, że może właściwie nie jesteśmy "właścicielami" tego pytania i dochodzimy do wniosku, że ktoś inny powienien dać odpowiedź.

I tak, miejmy nadzieję, że pytanie nie brzmiało "Gdzie jest toaleta?"

Ale sprawy wyglądają całkiem inaczej, gdy pytanie zadajesz Skrypciarzom. Jasne, też zapewne nie udzielą odpowiedzi. Ale przynajmniej nie będzie żadnych spotkań ani papierkowej roboty po drodze.

$pshost = get-host 

$pswindow = $pshost.ui.rawui



$newsize = $pswindow.buffersize 

$newsize.height = 3000 

$newsize.width = 150 

$pswindow.buffersize = $newsize



$newsize = $pswindow.windowsize 

$newsize.height = 50 

$newsize.width = 150 

$pswindow.windowsize = $newsize

Zanim przejdziemy dalej, powinniśmy zauważyć, że nie trzeba korzystać ze skryptu, by zmienić rozmiar okna konsoli PowerShell. Zamiast tego możesz zawsze zrobić tak:

  1. Uruchom powłokę Windows PowerShell.
  2. Kliknij prawym przyciskiem ikonę w górnym lewym rogu i kliknij pozycję Properties.
  3. Na karcie Layout ustaw pożądaną szerokość pod nagłówkiem Window Size.
  4. Kliknij przycisk OK.

Zadziała w sam raz. Ale macie rację: to jest trochę nudne, zwłaszcza w rubryce poświęconej skryptom. Dlatego też podaliśmy programową metodę zmiany rozmiaru okna konsoli Windows PowerShell. I, na deser, zanim skończymy, pokażemy jak zmienić tytuł okna i jego kolory.

Nie musicie dziękować, okazuje się, że to element działania, który Skrypciarze - jako kluczowi zainteresowani - zgodzili się wykonać.

Jeśli chodzi o sam skrypt, to zacznijmy od stworzenia referencji do obiektu (o nazwie $pshost) do obiektu konsoli Windows PowerShell. To coś, co robimy wywołując cmdlet Get-Host:

$pshost = get-host

Następnie, tego wiersza kodu używamy do stworzenia referencji do obiektu potomnego konsoli UI.RawUI:

$pswindow = $pshost.ui.rawui

Czas na krótką dygresję. Na naszym testowym komputerze zarówno szerokość ekranu konsoli PowerShell, jak i rozmiar bufora ma wartość 120. Czy ma to znaczenie? Tak, ma: szerokość ekranu nie może być większa od rozmiaru bufora. Tak więc, przed zwiększeniem wymiarów okna musimy powiększyć bufor. To właśnie robi następujący fragment kodu:

$newsize = $pswindow.buffersize 

$newsize.height = 3000 

$newsize.width = 150 

$pswindow.buffersize = $newsize

Trochę to pogmatwane, ale tak naprawdę to tworzymy tu w pamięci całkiem nowy rozmiar bufora, a potem właściwości tego wirtualnego bufora przypisujemy rzeczywistemu oknu konsoli. W tym celu najpierw przypisujemy właściwości BufferSize zmiennej o nazwie $newsize:

$newsize = $pswindow.buffersize

Gdy to zrobimy, ustawiamy wartości rozmiaru bufora: Height (wysokość - 3000 wierszy, wartość domyślna) i Width (szerokość - 150 znaków). Wtedy używamy następującego wiersza kodu, by przypisać te wartości rzeczywistemu oknu konsoli:

$pswindow.buffersize = $newsize

Po zmianie wielkości bufora, powtarzamy procedurę, tym razem korzystając z właściwości WindowSize, nadając oknu wysokość 50 wierszy i szerokość 150 znaków:

$newsize = $pswindow.windowsize 

$newsize.height = 50 

$newsize.width = 150 

$pswindow.windowsize = $newsize

Po uruchomieniu skryptu rozmiar okna konsoli Windows PowerShell natychmiast ulegnie zmianie. (Musimy tu jednak zauważyć, że efekt jest tymczasowy: po zamknięciu sesji i ponownym uruchomieniu okno wróci do dawnego rozmiaru. Aby trwale zmienić rozmiar okna można, między innymi, skorzystać z interfejsu UI do zmiany właściwości okna, lub umieścić skrypt w profilu powłoki PowerShell.)

A teraz, jak obiecaliśmy, dodatkowy kod, który zmieni tytuł okna konsoli (na Moja sesja PowerShell), a także kolory tła i tekstu (żółty tekst na czarnym tle). Nie omówimy tu wszystkich co i jak tego kodu, ale pewno sami się tego domyślicie:

$pshost = get-host 

$pswindow = $pshost.ui.rawui



$pswindow.windowtitle = "Moja sesja PowerShell" 

$pswindow.foregroundcolor = "Yellow" 

$pswindow.backgroundcolor = "Black"



cls

Widzicie, co mówiliśmy? Przy Skrypciarzach nie tylko dostajecie odpowiedzi na swoje pytania, ale też na pytania, których nawet nie zadaliście!

Oczywiście, musimy tu uczciwie przyznać, że Skrypciarze mają tendencję do lekkiej przesady, gdy opowiadają o życiu w Microsofcie. Nie trzeba chyba mówić, że pytania znajdują tu odpowiedzi, cały czas.

Tak nam w każdym razie powiedziano na ostatnim wirtualnym zebraniu, na którym zgodziliśmy się - kiedyś tam po świętach, oczywiście - zebrać się i spróbować podjąć decyzję, czy powinniśmy próbować podejmować decyzje w przyszłości.

Nie w tym roku, oczywiście, ale w przyszłym roku podatkowym.

Będziemy was informować na bieżąco.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne