Helpdesk: Sprawdzenie klucza Office 2016

2019-09-17

Kiedy masz kilka komputerów i kilka kluczy licencyjnych do Office, to łatwo się pogubić. Przyda się komenda, która potwierdzi, który klucz gdzie został użyty:

Uruchom cmd.exe i wprowadź polecenie:

cscript "C:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS" /dstatus

Uwaga na ścieżkę. Może być tak, że instalowałeś office 64-bitowy i wtedy w ścieżce nie powinno występować (x86).

Zależnie od tego co masz na komputerze wyniki mogą być różne:

oto przykład z komputera, na którym subskrypcja wygasła:

-a tak wygląda wynik na komputerze z działającym Office:

c:\>cscript "C:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS" /dstatus
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

---Processing--------------------------
---------------------------------------
PRODUCT ID: 00351-36292-81863-AZ939
SKU ID: 84895881-46df-4134-8abd-eb493eecf78e
LICENSE NAME: Office 16, Office16ProPlusMSDNR_Retail edition
LICENSE DESCRIPTION: Office 16, RETAIL channel
BETA EXPIRATION: 1601-01-01
LICENSE STATUS: ---LICENSED---
Last 5 characters of installed product key: 88PY7
---------------------------------------
---------------------------------------
---Exiting-----------------------------

Cały klucz nie jest wyświetlany, ale jego końcówka to 88PY7. Teraz jeśli tylko posiadasz legalny klucz licencyjny z  łatwością ustalisz o którą licencję chodzi!

By Rafał Kraik in Helpdesk

SQL: Policy Based Management z alertem

2019-09-16

Policy Base Management pozwala definiować reguły, które zadbają o to, żeby konfiguracja systemu była taka jaka chcesz.

Dajmy na to, że chcesz, aby wszystkie bazy danych (oprócz systemowych) miały recovery model full.

Zaczynamy od zdefiniowania conditions

Potrzebne będą dwa. Jeden, który sprawdza, czy RecoveryModel dla bazy jest ustawiony na Full, drugi, który sprawdza czy baza danych należy do użytkownika:

Czytaj dalej »

By Rafał Kraik in SQL

PowerShell: Wyszukiwanie w AD użytkownika lub grupy

2019-08-20

Nie ma lepszych narzędzi do wydobycia informacji o środowisku niż prosty skrypt, który można sklecić „na kolanie”

Znajdź mi użytkowników, którzy mają nazwę kończąca się na service:

Get-AdUser -filter "name -like '*service'" | select name

Znajdź mi grupy, które mają w nazwie PRD I kończą się na SYS:

Get-ADGroup -filter "name -like '*PRD*SYS'" | select name

Co oczywiście ważne przed uruchomieniem tych poleceń trzeba mieć zainstalowany feature „Active Directory Domain Services Tool”:

Get-WindowsFeature *adds* | Add-WindowsFeature

Proste!

By Rafał Kraik in Power Shell

Powershell: Upload pliku przez FTP

2019-08-19

Chociaz FTP nie jest bezpiecznym protokolem to czasami jeszcze gdzie niegdzie sie stosuje. Tym razem chodzilo o wyslanie plikow z serwera Windowsowego na serwer Linux. Idealnie jesli bedzie to zrobione przez PowerShella wlasnie.

Oto najwazniejszy kawalek kodu:

 

$localfile = 'c:/temp/filename.txt'
 $ftp = "ftp://servername/dir1/dir2/"
 $user = "username"
 $pass = "password"
 $destinationFileName = 'filename.txt'
 $webclient = New-Object System.Net.WebClient
 $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
 $uri = New-Object System.Uri($ftp+$destinationFileName)
 $webclient.UploadFile($uri, $localfile)

Niestety w czasie ladownia pliku pojawial sie blad:

The remote server returned an error: (553) File name not allowed.

Czytaj dalej »

By Rafał Kraik in Power Shell

SQL: ALTER DATABASE ALLOW_SNAPSHOT_ISOLATION waiting on ENABLE_VERSIONING

2019-08-14

Aplikacja nie chciała się uruchomić zgłaszając (i za to brawa dla programisty), że opcja ALLOW SNAPSHOT ISOLATION musi być włączona.

Niby prosta rzecz

ALTER DATABASE ... SET ALLOW_SNAPSHOT_ISOLATION ON

I co? Czekam i czekam… sprawdzam, co blokuje sesję. Wait time to ENABLE_VERSIONING. No dobrze – jeśli to pierwsza baza z tym ustawieniem, to może rzeczywiście coś tam się musi w tempdb przebudować? Ale komenda nie chce się skończyć!

Jak można przeczytać w https://www.sqlskills.com/help/waits/enable_versioning/

“Occurs when SQL Server waits for all update transactions in this database to finish before declaring the database ready to transition to snapshot isolation allowed state. This state is used when SQL Server enables snapshot isolation by using the ALTER DATABASE statement.

No dobrze, ale w mojej bazie nie ma już żadnych połączeń. Co może być nie tak? Nawet checkpoint wyzwoliłem ręcznie, ale nic…. Czytaj dalej »

By Rafał Kraik in SQL

Python: if w postaci jednej linijki nie działa z pass

2019-08-09

W Pythonie wyrażenie if można zapisać w postaci jednolinijkowca:

expr1 if cond else expr2

Jednak łatwo wpaść w pułapkę. Takie wyrażenie zadziała:

print(price-bonus) if bonus_granted else print(price)

ale już takie nie:

print(price-bonus) if bonus_granted else price = 200
print(price-bonus) if bonus_granted  else pass

Ale po kolei:

price = 10

bonus = 1

bonus_granted = True

A teraz odpowiadając na pytanie. Przypomnijmy, że Pythonie można mieć statement i expressions:

  • statement – coś robi i niekoniecznie cokolwiek zwraca. Przykładem statement jest pass i przypisanie wartości do zmiennych
  • expression – to jest jedna lub więcej instrukcji, które coś zwracają. Przykładem expression jest np dowolny napis, dowolne obliczenie, ale też np. polecenie print (!!!!!!)

Jak sprawdzić czy coś jest expression? Prosto. Do zmiennej przypisz wynik wykonania polecenia, np.: Czytaj dalej »

By Rafał Kraik in Python

SQL: co sie dzieje, kiedy zmieniasz PageVerify na CHECKSUM?

2019-08-09

Stare bazy migrowane ze starych systemow SQL moga miec ustawiona opcje PageVerify na TORN_DETECTION. Oczywiscie to metoda z zeszlego wieku i aktualnie powinnismy uzywac CHECKSUM. Obie wartosci mowia o tym w jaki sposob kontrolowac, czy zapis strony bazy danych na dysk wykonal sie w 100%, czy tez sa jakies problemy. TORN_PAGE pozwoli dowiedziec sie tylko o tym czy zapis zostal zakonczony poprawnie, podczas gdy CHECKSUM pozwala sprawdzic czy podczas zapisu (lub odczytu) nie doszlo do przeklamania.

Zalozmy ze jedna z baz przetrwala od roku 2005 do dzisiaj z opcja TORN_PAGE. Co sie stanie kiedy zmienimy opcje na CHECKSUM? Czy ta jedna zmiana spowoduje, ze serwer przeczyta wszystkie strony z dysku, wyliczy na nich sume kontrolna i zapisze dane spowrotem na dysk? Czy jezeli jakas strona byla uszkodzona i miala ustawiony bit odpowiadajacy za TORN_DETECTION to czy ten blad bedzie nadal widoczny? Czytaj dalej »

By Rafał Kraik in SQL