Wpis z mikrobloga

Tworzę sobie apke z nudów do inwentaryzacji komputerów w firmie.
Zamysł jest następujący - skrypt w powershell wrzucony do task schedulera będzie odpalał się np. 2 razy dziennie pobierał informacje o komputerze i zapisywał do bazy danych.
Potem będę sobie to wyświetlał i edytował jakąś apką np. napisaną w asp.net (bo dawno w tym nie pisałem).

I tutaj moje pytanie - w jaki sposób zapisać poświadczenia do bazy w skrypcie powershell?
Przekonwertować .ps1 do .exe ? Czy może dać możliwość update w konkretnej tabeli dla komputerów z domeny?
Jakbyście to mirki ogarnęły?

#sql #tsql #programowanie #csharp
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Zamysł jest następujący - skrypt w powershell wrzucony do task schedulera będzie odpalał się np. 2 razy dziennie pobierał informacje o komputerze i zapisywał do bazy danych.


@ZatkanaKichawa: tak z ciekawości: jaki jest cel pobierania 2x dziennie informacji o komputerze i zapisywania go w bazie jeśli to tylko inwentaryzacja? ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@ktos12356: No może być raz dziennie ( ͡° ͜ʖ ͡°).
Podstawowe info. ostatnia zainstalowana aktualizacja, ostatni zalogowany user, ile % wolnego na dysku, jakie aplikacje zainstalowane itd.
Do tego jeszcze jakieś eventy z dziennika zdarzeń.
Chce sobie trochę pokodzić wieczorami, więc to taki projekt, który potem wrzucę na githuba - może komuś się przyda.
  • Odpowiedz
@ZatkanaKichawa: a może w jednym miejscu aplikacja w .net z bazą danych. Apka ta udostępnia restful endpointy do których komputery będa wysyłały request z tymi danymi, a w razor pages będziesz sobie wyświetlał te wszystkie dane
  • Odpowiedz
@harakiri888: Mam na myśli to, że skrypt uruchamia się na komputerze końcowym powiedzmy na użytkowniku domena\Jan.Kowalski
I teraz ten skrypt powershell musi się jakoś uwierzytelnić w SQL Server, aby zrobić insert into do konkretnej tabeli, lub update w przypadku, gdy taki wpis istnieje.
  • Odpowiedz
@ZatkanaKichawa: No ale w czym problem żeby skrypt się uwierzytelnił w SQL Server? Komunikacja z SQL Serverem odbywa się przez TCP na porcie 1433. SQL Server wspiera dwa typy uwierzytelniania SQL i Windows.

W tym pierwszym tworzysz dedykowanego uzytkownika SQL (można go nazwać service account) za którego pomocą wszystkie skrypty Powershell się uwierzytelniają. Inną opcją jest Windows, gdzie korzystasz z tożsamości użytkownika zalogowanego na stacji roboczej.

Poczytaj o "SQL Server
  • Odpowiedz
@markaron: czyli sugerujesz, abym w AD utworzył jakieś konto, które będzie miało uprawnienia do modyfikacji w tabeli / bazie.
Na komputerze docelowym uruchamiać skrypt .ps1 w harmonogramie zadań właśnie z tego konta?
  • Odpowiedz
@ZatkanaKichawa: No możesz, możliwości jest wiele. Plus z Windows authentication w SQL Server jest taki że nie przechowujesz nigdzie hasła. Przykładowy connection string:

Data Source=ServerName; Initial Catalog=DatabaseName;Integrated Security=True;
Jak miałbyś użytkownika w bazie (SQL User) to wtedy connection string będzie wyglądać mniej więcej tak:
  • Odpowiedz
@markaron: Tylko jak będę miał sprytnego użytkownika to przez SSMS będzie mógł za pomocą Windows Auth podłączyć się do bazy xD
Ale ok - zrobię tak jak piszesz - każdy user w domenie będzie uprawniony, a potem będę jakoś to może zawężał.
Dzięki ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@ZatkanaKichawa: Nie doczytałeś. Nie chodzi mi o to żeby użytkownik stacji roboczej miał dostęp do SQL Servera tylko żebyś stworzył dedykowane konto serwisowe w AD w ramach którego uruchamiany jest skrypt PS.

Innymi słowy na maszynie na której zalogowany jest Janek Kowalski możesz uruchamiać procesy jako inny użytkownik. W Twoim przypadku tym innym użytkownikiem jest konto w AD ktore służy tylko do komunikacji pomiędzy skryptem PS a bazą.
  • Odpowiedz
@ZatkanaKichawa: A po co dawać skryptowi dostęp do bazy w ogóle? Skoro do wyswietlania będzie apka w ASP, to dodaj tam endpoint RESTowy, który będzie te dane dodawał, a skrypt z PS będzie tylko wysyłał request, wtedy nie ma żadnego problemu z trzymaniem wrazliwych danych
  • Odpowiedz