zdalne odinstalowanie agentów VMM

automationscenariusz: upgrade VMM 2o12 -> 2o12 R2. nie ma inplace upgrade, więc stawiany obok. agentów również nie chce zainstalować z automatu na hostach bo ‘version is not supported’. trzeba więc w pierwszym kroq odinstalować wszystkie agenty na wszystkich hostach. jeśli tylko jest dobra [czyli skrypto-przyjazna] notacja nazewnicza, to można to zrobić szybko, sprawnie i bez bólu. taki przykład – dla dziewięciu hostów o nazwach hvhosto1-o9. wymaganie: skonfigurowane winRM:

1..9|%{invoke-command -ComputerName hvhost0$_ -scriptBlock {gwmi -Class win32_product|? name -like '*virtual machine manager*'|%{$_.uninstall()}}}

eN.

kopiowanie plików na VM

nie qmam polityki eMeSa, który zdając sobie sprawę z wagi wirtualizacji, ubił środowiska wirtualizacyjne na stacjach roboczych. Hv na lapq ma wiele wad, ale jedna z nich została usunięta. w końcu można kopiować pliki bezpośrednio na maszynę… szkoda, że nie w drugą stronę, ale od czegoś trzeba zacząć q:

pełny opis zamieściłem tutaj.

eN.

 

 

SCVMM – jest sieć… a nie ma

scenariusz: jest sobie SCVMM i podpięte do niego ileś-tam hostów. na wszystkich mam utworzoną sieć “External” z dostępem public, z której korzystają virtualki. tworzę nową maszynę i host, na którym chcę ją utworzyć, dostaje w “rating o”. VMM odmawia utworzenia maszyny na tym hoście a w wyjaśnieniach takiej oceny jest informacja, że nie ma takiej sieci jak “External”. dodam jeszcze, że na tym hoście działa normalnie inna VM podpięta do tej sieci, i wszystko jest prawidłowo.

sprawdzam w VMSwitch w VMMie. porównuję z innymi hostami. nic. sprawdzam bezpośrednio na Hyper-v żeby wyeliminować jakiś błąd czy desynch w informacjach na VMM. ale wszędzie, wszystko wygląda ok. postanawiam zmusić do utworzenia virtualki żeby dostać jakiś sensowny błąd – i tak też się dzieje. tworzę VM bez przypisania do sieci i kiedy po poprawnym utworzeniu zmieniam sieć na “External” pojawia się:

Error (26894)
VM Network (External) is unavailable on Virtual Switch (External)

dziwne. okazuje się, że są wewnętrznie dwa obiekty – VM Network i VM Switch. VM Switch istnieje, tylko sieci nie ma. ale żadnej metody utworzenia takiej sieci również nie ma – ani z PS ani z interfejsu /: przyjrzałem się konfiguracji przypisań sieci do sieciówek. okazało się, że w wyniq jakiegoś błędu, sieć jest przypisana do jednej karty NIC, a VM Switch do drugiej. po zmianie przypisania NIC na poziomie VM Switcha – wszystko zaczęło śmigać. a tak to wygląda w obrazkach:

w widoq VMM/VM proerites/Hardware przy powiązaniu kart sieciowych z sieciami wirtualnymi widać, że sieciówka o numerze #87 nie ma dowiązania z żadną z nich. strzałka pokazuje na ‘External’, które jest dowiązane do drugiego interfejsu.

props1

dla sieciówki #87 ‘External’ nie jest dowiązane

prop2

w interfejsie nie widać pełnych nazw – niestety są poucinane ze względu na długość. dla tego najlepiej upewnić się z PS:

Get-VMSwitch external|fl *

ComputerName                        : COMPUTERNAME
Name                                : External
Id                                  : db819d9e-26ab-4282-89f7-12e0436a3f38
Notes                               :
SwitchType                          : External
AllowManagementOS                   : True
NetAdapterInterfaceDescription      : Broadcom BCM57810 NetXtreme II 10 GigE (NDIS VBD Client) #87

 

jak widać – VM Switch związany jest z #87 a sieć wirtualna z fizyczną #86. i zrobił się split…

eN.

IIS AppPool – 32 czy 64 bit?

scenariusz: upgrade wersji Dell OpenManage. po instalacji wszystkich komponentów, aplikacja IIS wywala się. prawdopodobnie jest niekompatybilność wersji – 32/64bit. jak sprawdzić czy biblioteka jest 32 czy 64bit? w zasadzie odpowiedź można znaleźć w eventlogu:

Could not load all ISAPI filters for site ‘OPENMANAGE ESSENTIALS’.  Therefore site startup aborted.

ISAPI Filter ‘c:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll’ could not be loaded due to a configuration problem. The current configuration only supports loading images built for a AMD64 processor architecture. The data field contains the error number. To learn more about this issue, including how to troubleshooting this kind of processor architecture mismatch error, see http://go.microsoft.com/fwlink/?LinkId=29349.

niemniej pytanie pozostaje – jak upewnić się jaka jest wersja biblioteki? pomocnym narzędziem będzie mały tool z VisualStudio – dumpbin

dumpbin /headers filename.dll

PE signature found
File Type: DLL
FILE HEADER VALUES
             14C machine (x86)  <<== I tu jest to cenne info z nagłówka pliku
               1 number of sections
        45499E0A time date stamp Thu Nov 02 03:28:10 2006
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
            2102 characteristics
                   Executable
                   32 bit word machine <<== I tu
                   DLL

teraz na 1oo% rozwiązaniem będzie: w IIS -> Application Pools -> [RMB] Advanced Settings -> Enable 32-Bit Application

eN.

 

 

 

 

 

statystki na Exchange 2o1o

2014-08-07 15_18_56-statistics - Szukaj w Googletrochę na temat statsów na Ex2kd. że PowerShell wymiata to już pisałem wiele razy, ale nie omieszkam jeszcze wiele napisać. “PowerShell wymiata“. wszystko co kiedyś było bardzo trudne, w porywach do niemożliwe i wymagało jakiejś tajemnej wiedzy – teraz leży okrakiem – nic tylko brać (; w przypadq Exchange trochę tajemnej wiedzy jest potrzebne żeby dobrać się do danych prawidłowo – w innym przypadq można ominąć ważne części. a w końcu w statystykach chodzi o dokładność.

najpierw kilka najprostszych poleceń do statystyk:

get-mailboxStatistics -database <dbname> #check stats for entire DB
get-mailboxStatistics "<mailbox name>" #check stats for mbx

to jednak polecenie bardzo wredne i ma swoje humory. i to poważne. na początek fakt, że w środowisq wielodomenowym nie są przeszukiwane wszystkie domeny. wychodzą z tego niewidzialne skrzynki. sprawdzić to można:

get-ADServerSettings

chodzi konkretnie o parametr ‘ViewEntireForest’ który baj difolt jest ustawiony na $false. dość dziwne jest dodatkowo to, że nawet jak się go przestawi na $true, to potrafi wrócić, z niewiadomych względów, do ustawienia standardowego /: więc jeśli skrzynki znaleźć nie można, warto go sprawdzić.

set-ADServerSettings -ViewEntireForest $true

kolejną ciekawostką jest to, że to polecenie zwraca statystyki *wszystkich* skrzynek. że to przecież dobrze? no nie koniecznie – jeśli wykonuje się jakieś ruchy, przenosi się skrzynki między bazami, to taka skrzyneczka jest de facto kopiowana, a jej cień zostaje w bazie danych aż do czasu osiągnięcia czasu retencji. trzeba zatem takie skrzynki odfiltrować, a odpowiada za to parametr ‘disconnectDate’ – jeśli wartość jest $null, to znaczy, że skrzynka nie jest odłączona, to znaczy że jest dobra. wiedząc to, można sprawdzić zarówno ile zajmują skrzynki ale również ile miejsca się marnuje – odłączone mailboxy można wywalić przed czasem retencji. dodatkowo, ponieważ interesują nas wielkości, a te nie są standardowo wyświetlane, warto użyć ‘select’:

Get-MailboxStatistics -Database "<mailbox database>" |where {$_.DisconnectDate -eq $null} |select displayname,TotalItemSize,databasename,lastlogontime|sort -property TotalItemSize -Descending

 

jeśli interesuje nas suma, to trzeba to sobie pododawać za pomocą ‘measure’ ale to za chwilę. najpierw zagadka – czemu to polecenie nie zadziała zgodnie z oczekiwaniami? otóż sortujemy po wielkości, a te zwracane są w różnych jednostkach – MB, GB, PTB [to skrzynka CEO (; ], więc 3MB będą większe od 1GB. trzeba zatem wykonać trochę matematyki:

Get-MailboxStatistics -Database "<mailbox database>" |where {$_.DisconnectDate -eq $null} |select displayname,@{N="itemSize";E={[math]::round($_.totalitemsize.value.tobytes() /1MB,2)}},databasename,lastlogontime|sort -property ItemSize -Descending

i to niestety nie koniec. jednej rzeczy nie udało mi się odkryć. otóż po usunięciu skrzynki użytkownika i założeniu mu nowej, disconnectDate pozostaje $null /: a to oznacza, że cały czas pojawia się w statsach. za to mniej grymaśne jest polecenie get-mailbox a więc jeśli nie interesuje nas zużyte miejsce przez nieistniejące skrzynki, najlepiej korzystać od tej strony:

get-mailbox -database <mailbox database>|get-mailboxStatistics|select displayname,@{N="itemSize";E={[math]::round($_.totalitemsize.value.tobytes() /1MB,2)}},databasename,lastlogontime|sort -property ItemSize -Descending

jeśli nie interesują nas poszczególne skrzynki a bardziej wielkości całych baz:

Get-MailboxDatabase -Status|select name,@{N="DBsize";E={"$([math]::round($_.DatabaseSize.Tobytes() /1Gb, 2)) GB"}},databasesize|sort -Property databasesize -Descending|select name,dbsize

a co do mierzenia całej wielkości, to już odeślę do zewnętrznego wpisu, gdzie jest bardzo ładna i prosta funkcja, która to realizuje.

eN.