Exchange online, powershell, kontakty i rezerwacja sal
to, co jest piękne w PS to fakt, że kiedy się go pozna, wszystko jedno do jakiego produktu się usiądzie – chwila moment i można szybko wyciągać statystyki, tworzyć obiekty, zestawienia i co kolwiek potrzeba. z jednego miejsca i bez różnych GUI. <3 <3 ^^
przesiadka z Exchange onPremise na Exchange onLine jest bezbolesna – ot trochę mniej poleceń. wymagania? żadne. wystraczy po prostu zestawić sesję z serwerem i zaimportować sesję i stacja zmienia się w konsolę zarządzającą Exchange. po imporcie sesji dostępny jest moduł, którego nazwa jest generowana jakimś pseudolosowym algorytmem. dostępne polecenia można wylistować przy pomocy get-command:
C:\...ive\_scriptz :))o- Import-PSSession $session WARNING: The names of some imported commands from the module 'tmp_50wtbfhh.kkk' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb. ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Script 1.0 tmp_50wtbfhh.kkk {Add-AvailabilityAddressSpace, Add-DistributionGroupMember... C:\...ive\_scriptz :))o- get-command -Module tmp_50wtbfhh.kkk CommandType Name ModuleName ----------- ---- ---------- Function Add-AvailabilityAddressSpace tmp_50wtbfhh.kkk Function Add-DistributionGroupMember tmp_50wtbfhh.kkk Function Add-MailboxFolderPermission tmp_50wtbfhh.kkk Function Add-MailboxPermission tmp_50wtbfhh.kkk Function Add-ManagementRoleEntry tmp_50wtbfhh.kkk [...]
do założenia kontaktu [bo przecież nie będę wyklikiwał z interfejsu, fuj] jest polecenie 'new-mailContact’. okazuje się jednak, że ma ono bardzo ograniczoną listę parametrów, nie pozwalając ustalić takich szczegółów jak organizacja, stanowisko, telefon etc. i tu znów piękno PS – polecenie to nie tylko tworzy obiekt typu 'mailContact’ ale również go zwraca. przypomnę, że PS zwraca obiekty przez referencję dzięki czemu wszystko można 'pajpować’. ponieważ jest drugie polecenie – 'set-contact’, które przyjmuje wszystkie wymagane parametry a jako wskazanie może użyć zarówno ID jak bezpośredniej referencji do obiektu 'mailContact’, można utworzyć prostego jednolinijkowca, który zrobi co trzeba:
New-MailContact -ExternalEmailAddress user.name@company.org -Alias user.name -Name "User Name" -FirstName User -LastName Name |Set-Contact -Company CompanyOrg -MobilePhone "23-666-232323" -department "w-files"
czyli gdyby chcieć ten prosty znaczek '|’ zapisać na polski byłoby to mniej-więcej – 'a następnie przekarz go przez referencję do następnego polecenia’
…
i jeszcze „jedna rzecza” która się przydaje – rezerwowanie sal przez osoby z zewnątrz. standardowo takiej możliwości nie ma. w ex2k13 uzyskuje się to poprzez 'calendar processing’:
#wylistuj zasoby sal get-mailbox -RecipientTypeDetails RoomMailbox #sprawdź parametr akceptacji przez kontakty zewnętrzne: (get-calendarProcessing <roomID>).ProcessExternalMeetingMessages set-calendarProcessing <roomID> -ProcessExternalMeetingMessages $true
to jeszcze nie wystarczy. jeszcze jedno wymaganie i jeden 'trick’:
- adres dokonujący rezerwacji musi istnieć jako kontakt na serwerze [poprzedni przykład]
- a trick polega na tym, że nie zadziała dodanie w spotkaniu pokoju tak, jak to się zwyczajowo robi na homeserwerze. należy adres wpisać tak, jak zaprasza się zwykłą osobę.
eN.
zminiejszenie fizycznej wielkości dysq vhdx
dość standardowy scenariusz: zaczęło mi na lapq brakować przestrzeni więc zacząłem szukać co ją kradnie. jednym ze złodziei okazała się maszyna wirtualna z w7 – pomimo, że dysk skonfigurowany był jako 'dynamic’, cała maszyna na vhdx, to wielkość fizyczna jest taka sama, jak wielkość partycji w maszynie.
ładnie zdefragmentowałem dysk, shutdown i optymalizacja:
nic. ani bajta
…nadal nic – nawet bajta /:
czas poszperać. gdzieś na forum znalazłem informację, że jest bug w obsłudze vhdx i lepiej używać vhd. nie wierzę – szukam dalej. znalazłem kolejny ciekawy wpis – że jest błąd przełączniq 'full’ i lepiej używać 'quick’ choć wydaje się to nie mieć sensu. sprawdziłem, zachowuje się zgodnie z przewidywaniami, czyli nie ugryzł ani bajta. na dysq miałem bardzo mało miejsca, pomyślałem, że może optimize-hvd działa jak np. eseutil – tworząc kopię gdzieś w tempie a potem nadpisując. ciekawostka jest taka, że niestety z tej operacji nie ma żadnego raportu – ani w eventvwr, ani na ekranie. skopiowałem plik na dysk zewnętrzny i powtórzyłem próby – bez zmian.
rozwiązanie:
rozwiązanie trochę mnie zaskoczyło. kluczowym jest informacja z technetu:
aby kompresja zadziałała prawidłowo, trzeba najpierw podmountować dysk [hę?] w trybie readonly:
spodziewałem się, że przy wyłączonej maszynie mountowanie jest robione dynamicznie albo wręcz niepotrzebne. optymalizacja bez mountowania o niczym nie informuje – a mogłaby… zatem pozostaje wiedzieć (:
eN.