PowerShell: Sprawdzanie i nadawanie użytkownikom praw użytkownika User Rights

2019-03-09

W systemie Windows użytkownicy mogą mieć uprawnienia (do plików, drukarek itp) oraz prawa (do wyłączenia komputera, do zalogowania itp). Tutaj przedstawiam dwie funkcje, które pracują z prawami użytkowników. Pierwsza z nich sprawdza, czy użytkownik ma przyznane prawo, a druga nadaje takie prawo.

Filozofia obu funkcji jest podobna. Polecenie secedit służy do wyeksportowania informacji o przyznanych prawach dla użytkowników oraz do zaimportowania tych informacji. Między eksportem a importem znajduje się trochę typowej PowerShellowej logiki, która sprawdza czy użytkownik ma przypisane prawo czy nie. Czytaj dalej »

By Rafał Kraik in Power Shell

Helpdesk: Nie można usunąć pliku, bo jest otwarty przez inny proces

2019-03-09

Czasami, kiedy chcesz usunąć plik lub katalog, możesz otrzymać komunikat mówiący o tym, że plik nie może być usunięty, bo jest otwarty przez inny proces. No tak, tylko jaki proces otworzył ten plik? Gdybym znał nazwę tego procesu mógłbym go zakończyć – normalnie lub z managera zadań, tylko jak ustalić co to za program?

Oto metoda:

  1. Uruchom program „Resource Monitor”, w tym celu kliknij start i wpisz nazwę resmon
  2. Przejdź do CPU >> Associated Handles i wpisz fragment nazwy pliku lub ścieżki pliku, którego planujesz usunąć
  3. Już za chwilę zobaczysz jakie pliki o nazwie pasującej do wprowadzonego wyrażenia są otwarte i jakie programy je otworzyły:

 

Teraz już wiadomo jaki proces trzeba zakończyć. Zresztą można to zrobić bezpośrednio w tym oknie. Kliknij dany proces prawym przyciskiem myszy i wybierz Zakończ

By Rafał Kraik in Helpdesk

SQL: Jak sprawdzić jakie komponenty są zainstalowane

2019-03-06

SQL Server to nie tylko silnik bazy danych, ale także inne „spokrewnione” usługi. Moim celem było sprawdzenie, czy na serwerze jest zainstalowany replication services.

Metoda na to jest następująca. Odpowiednie narzędzie do tego celu to SQL Server Installation Center. Może się zdarzyć tak, że na serwerze jest dostępnych więcej wersji narzędzi. W takim przypadku należy wybrać tą odpowiednią, w moim przypadku 2016

Tutaj należy przejść do sekcji tools, w której znajduje się link do „Installed SQL Server feature discovery report”. Czytaj dalej »

By Rafał Kraik in SQL

Python: Pandas: Pobranie pliku csv spakowanego gzip i import do data frame

2019-03-04

Python ma całe mnóstwo modułów, które pozwalają na wykonywanie prawie wszystkich operacji (no bez przesady, ale sporo można zrobić)!

Mamy moduł:

  • requests – do wykonywania operacji na stronach webowych
  • gzip lub zip – do kompresji plików (lub ogólniej danych)
  • io – do wykonywania operacji wejścia wyjścia
  • pandas – do przetwarzania danych

Jeśli dobrze się postarać można ze sobą połączyć te moduły i… pobrać plik, rozkompresować go i zaimportować do obiektu data frame!

Tutaj pobierzemy jeden z plików publikowanych na stronie EuroStat:

https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?sort=1&dir=data

import pandas as pd
import requests, gzip, io

url = 'https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?sort=1&file=data%2Faact_ali01.tsv.gz'
 
downloaded_file = requests.get(url)
unzipped_content = gzip.open(io.BytesIO(downloaded_file.content))
df = pd.read_csv(unzipped_content, delimiter='\t')

df.head()

w zależności od upodobań polecenie można skrócić:

import pandas as pd

import requests, gzip, io
url = 'https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?sort=1&file=data%2Faact_ali01.tsv.gz'
 
with gzip.open(io.BytesIO(requests.get(url).content)) as unzipped_content:
 df = pd.read_csv(unzipped_content, delimiter='\t')
df.head()

 

 

 

 

By Rafał Kraik in Python

SQL: MSDTC: The partner transaction manager has disabled its support for remote/network transactions

2019-03-04

MSDTC to jedna z usług, o której… lepiej nie słyszeć, bo jeśli o niej nie słyszysz, to znaczy, że wszystko działa, a jak już ktoś coś o niej powie, to często zaczyna się szukanie igły w stogu siana. Na szczęście konfiguracja usługi nie jest aż tak bardzo kłopotliwa.

Ta opowieść zaczyna się od kontaktu ze strony administratora, który stwierdził, że jego aplikacja nie łączy się do MS Distributed Transaction Coordinator-a.

Oczywiście należy zacząć od sprawdzenia czy usługa MSDTC w ogóle działa! Jeśli akcja działaby się na pojedyńczym serwerze wystarczyłoby przejrzeć usługi. W przypadku clustra, MSDTC jest zwykle konfigurowane jako usługa roli clustra:

Get-ClusterResource | where {$_.ResourceType -eq 'Distributed Transaction Coordinator'}

Name                                    State  OwnerGroup   ResourceType
----                                    -----  ----------   ------------
New Distributed Transaction Coordinator Online SERVER_00123 Distributed Transaction Coordinator

Status online świadczy o tym, że usługa działa.

Kolejny pomysł to oczywiście pozamykane porty. Połączenie z MSDTC zaczyna się na porcie 135, a potem jest losowany port z zakresu 1024 do 65525. Po stronie serwera zazwyczaj istnieją już odpowiednie reguły w definicji firewall, wystarczy je włączyć.

To polecenie wyświetla reguły, które mają coś wspólnego z „distributed” lub „DTC”: Czytaj dalej »

By Rafał Kraik in SQL

Python: NameError: name ‚Python’ is not defined

2019-02-28

Po wpisaniu: „python -V” wyświetla się „NameError: name ‚Python’ is not defined”

To jest mniej problem z Pythonem, a bardziej z konfiguracja systemu operacyjnego. Kiedy uruchamiasz polecenie, to system operacyjny musi je odnaleźć na dysku. System operacyjny nie przegląda za każdym razem wszystkich katalogów żeby znaleźć jeden prasujący program. W systemie operacyjnym jest zdefiniowana zmienna środowiskowa o nazwie PATH, która zawiera w sobie wszystkie katalogi, które w tej sytuacji mają być przeszukane.

Podczas instalacji, już na pierwszym ekranie pada pytanie, czy instalator ma dodać Python do ścieżki

Czytaj dalej »

By Rafał Kraik in Python

Powershell: Zmienne globalne

2019-02-28

W skryptach PowerShell można korzystać ze zmiennych lokalnych (widocznych wewnątrz funkcji), zmiennych skryptu (widocznych w skrypcie) i zmiennych globalnych (widoczne wszędzie). Popatrz na taki przykład:

function Show-Variable()
{
 echo "Inside the function: $MyVar"
 $MyVar='BLUE'
}
$MyVar = 'GREEN'
echo "Outside the function: $MyVar"
Show-Variable
echo "Outside the function: $MyVar"

Jest tutaj funkcja, która wyświetla wartość zmiennej zdefiniowanej początkowo na poziomie skryptu. Pytanie, czy ta zmienna będzie widoczna dla funkcji i czy rzeczywiście uda się ją zmienić? Czytaj dalej »

By Rafał Kraik in Power Shell