Błąd 9009 zwracany w ERRORLEVEL

2015-12-11

Skrypt powershell na systemie zdalnym uruchamiał starego dosowego batcha, który miał za zadanie uruchomić jakiś program exe i kończył się instrukcją

exit %errorlevel%

No i cóż ciągle dostawałem numer 9009. Krótkie szukanie po googlach i właściwie ciągle informacje o błędzie związanym z DNS! A ten program exe nic nie miał wspólnego z siecią. I dopiero tutaj znalazłem rozwiązanie:

http://www.febooti.com/products/automation-workshop/online-help/events/run-dos-cmd-command/exit-codes/

Error 9009 – Program is not recognized as an internal or external command, operable program or batch file. Indicates that command, application name or path has been misspelled when configuring the Action.

Po prostu z jakiegoś powodu w tym momencie mój exe znikał, a dlaczego to już całkiem inna bajka.

By Rafał Kraik in Błedy

SQL: Execute permission na całą bazę danych

2015-12-11

Użytkownik zażyczył sobie nadania uprawnień:

-odczyt
-zapis
-wykonanie procedur w całej bazie danych

Odczyt – proste – db_datareader

Zapis – proste -db_datawriter

Wykonanie – proste – db_procexecutor … ops nie ma takiej roli 😉 No ale sprawę załatwia polecenie

grant execute on database::DatabaseName to [UserName]
By Rafał Kraik in SQL

Powershell -czego używać try/catch czy trap?

2015-12-07

Pisząc skrypt masz możliwość obsługi błędów na kilka sposobów, a te najpopularniejsze to

  • blok try / catch
  • instrukcja trap

Zawsze polecam stosowanie try catch, bo nie jest to trudne rozwiązanie, a pozwala na dość elastyczną obsługę błędów. Zasada jest prosta. W bloku try umieść instrukcje, które potencjalnie mogą spowodować błąd, a obsługę błędu wykonaj w catch. Takich bloków try catch można w skrypcie umieścić więcej i dzięki temu można w różny sposób  reagować na różne błędy.

function Get-IP($hostName)
{
 [System.Net.Dns]::GetHostAddresses("www.$name.com")
}
$name = 'kaskdicxoienrh'
Try 
{ 
 Get-IP $name 
}
catch 
{ 
 Write-Warning "$name - bad name - terminating script" 
 return
}

Czytaj dalej »

By Rafał Kraik in Power Shell

Powershell: MouseMove czyli ruszanie myszką

2015-12-03

Wyobraź sobie, że masz w nocy do wykonania długotrwałe zadanie. Jeśli na komputerze nic się dzieje mogą się zdarzyć różne niespodziewane rzeczy: komputer przejdzie w stan czuwania, rozłączy się sesja zostaniesz wylogowany itp. No a oczywiście nie chce ci się siedzieć całą noc, żeby tylko ruszać myszką…

No więc napiszmy program ruszający myszką. Co będzie potrzebne?

  • klasa [System.Windows.Forms.Cursor], a dokładniej jej właściwość Position, która to opisuje aktualne położenie kursora myszki w punktach
  • klasa System.Drawing.Point, która jak sama nazwa wskazuje pozwala na zapamiętanie współrzędnych punktu

Aby sprawdzić gdzie znajduje się kursor wykonaj polecenie:

[System.Windows.Forms.Cursor]::Position

mouse01

Kurs_powershell_landscape_620

X i Y to właściwości opisujące aktualne położenie kursora. Jeśli chcesz zmienić jego położenie, to zmień wartość X lub Y, np. tak: Czytaj dalej »

By Rafał Kraik in Power Shell

Powershell: Obiekt o właściwościach nazwanych jak w tablicy

2015-12-01

Chcesz mieć obiekt, który ma właściwości o wybranych przez Ciebie nazwach. Może np. czytasz konfigurację z pliku ini i z zapisu:

Name=Server001
Domain=domain.pl
Service=SQL
chcesz utworzyć obiekt o właściwościach:
$obj.Name      # o wartości Server01
$obj.Domain    # o wartości domain.pl
$obj.Service   # o wartości SQL

Oto co należy zrobić:

Tworzysz obiekt:

 $obj = New-Object -TypeName psobject

A potem wykonujesz kolejno:

$obj | Add-Member -MemberType NoteProperty -Name 'Name'    -Value 'Server01'
$obj | Add-Member -MemberType NoteProperty -Name 'Domain'  -Value 'domain.pl'
$obj | Add-Member -MemberType NoteProperty -Name 'Service' -Value 'SQL'

Kiedy chcesz się odwołać do właściwości $obj zrobisz to np. tak:

if( $obj.Name -eq 'Server003')
{
 ...
}

Czytaj dalej »

By Rafał Kraik in Power Shell

Powershell: Jak dostać nazwę zmiennej?

2015-12-01

Nie wiem do czego to było koledze potrzebne, może kompilator pisze (?) ale pytanie było takie:

Mam zmienną x:

$x=1

Chcę mieć zmienną y, która w swojej wartości będzie miała nazwę zmiennej x. Oto zaproponowane rozwiązanie:

$x=1
$y = (get-variable x).Name
$y

By Rafał Kraik in Power Shell

Powershell: W połączeniu zdalnym przez remoting nie działa odwołanie do AD

2015-11-30

Otwieram połączenie do serwera zdalnego

Enter-PSSession -Computer MyServer -Credential (Get-Credential 'domain\myadminusername')

Potem w tym połaczeniu odwołuję się do:

[ADSI]"WinNT://$($env:userdnsdomain)/another_user_name"

Niestety dostaję błąd:

Value for dictionary entry is not specified.
+ CategoryInfo :
+ FullyQualifiedErrorId : System.Management.Automation.Remoting.PSRemotingDataStructureException

Jeśli zaloguję się na serwer lokalnie przez RDP i wykonam dokóładnie to samo polecenie, to wszystko działa poprawnie. Dlaczego?

W sesji remotingu chciałem skorzystć z usług katalogowych (kontroler domeny), co spowodowałoby wtórne uwierzytelnienie na kontrolerze domeny czyli double hop….

Do double hop trzeba się odpowiednio skonfigurować….

By Rafał Kraik in Power Shell