Category Archives: Komputery

WSUS Support

Restart klienta

net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver

Poniższe dwie linijki zmieniają nazwę, równie dobrze można skasować foldery. Jeszcze nie zdarzyło mi się, żebym odzyskiwał.

ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old

net start wuauserv
net start cryptSvc
net start bits
net start msiserver

wuauclt.exe /resetauthorization
wuauclt.exe /detectnow
wuauclt.exe /reportnow

Czasy Windows. Konkretnie jeden, systemowy.

Sprawdzenie ustawień czasu pod OS Windows:

W32tm /query /configuration

Źródło czasu:

w32tm /query /source

Ustawienie źródeł czasu NTP

w32TM /config /syncfromflags:manual /manualpeerlist:”10.10.1.11 10.10.2.22″

Aktualizacja ustawień:

w32tm /config /update

Wymuszenie synchronizacji:

w32tm /resync

Porównanie czasu systemowego z wzorcem:

w32tm /stripchart /computer:ntpserver.local /dataonly

Więcej info:

  • https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/how-the-windows-time-service-works
  • https://jasoncoltrin.com/2018/08/02/how-to-set-clock-time-on-ad-domain-controller-and-sync-windows-clients/

Bezinwazyjne rozszerzenie partycji – Windows

Jeżeli używasz VMWare lub czegoś podobnego i nagle na partycji (nawet systemowej) zaczyna brakować miejsca, nie musisz już się martwić. (Pod warunkiem, że fizycznie będziesz miał wolną przestrzeń).

Wystarczy w parametrach wirtualnej maszyny zwiększyć dysk wirtualny, a do powiększenia samej partycji użyć programu Extpart ze strony firmy Dell: http://www.dell.com/support/drivers/us/en/19/driverdetails?driverid=R64398

Przykład polecenia: Extpart c: 1024

Wielkość podajemy w MB.

ActiveXperts – VBS XML Value Reader

W mojej firmie używamy softu o nazwie ActiveXperts Network Monitor.

Spisuje się świetnie. Niestety, firma HP się nie postarała i przy pomocy propotkołu SNMP nie można odczytać żadnej wartości temperatury z szafy HP Blade c7000. Można za to odczytać wszystkie niezbędne wartości przez stronę XML, którą generuje Onboard Administrator. Tutaj niestety swoje niedomagania pokazuje ActiveXperts. Nie umie poradzić sobie wewnętrznie z takimi plikami. Potrafi za to uruchamiać specjalnie napisane pliki VBS.

Poniżesz przedstawiam skrypt VBS, który napisałem w celu wyciągnięcia danych o temperaturze z pliku XML. Dodam, że skrypt ten można wykorzystać w celu wyciągnięcia dowolnej wartości z pliku XML.

Ma oczywiście kilka ograniczeń, ale dla moich zastosowań w zupełności wystarczy.

Plik można uruchomić w programie ActieXperts albo bezpośrednio w systemie Windows, np. cscript ReadXmlValue.vbs.

W tym drugim przypadku należy odremować ostatnią linijkę i zmienić wartości na pożądane. Nie załączam tylko pliku xmldata.xml – muszę go wcześniej wyczyścić z danych firmowych.

 

ReadXmlValue

Powyższy skrypt na podstawie podanego pliku XML – może to być link do strony; ścieżki XML – kolejne wartości kluczy w drzewie pliku XML oraz wartości granicznych, minimum i maksimum ActiveXperts generuje odpowiednie działanie.

Windows 2008 Server R2 – ICMP Ping

Domyślnie, po zainstalowaniu serwera Windows 2008 Server R2, Windows Firewall blokuje pakiety przychodzące ICMP Ping.

Na stronie Microsoftu można odnaleźć informację, jak to włączyć ale…. ale nie działa. Nie działa, gdyż w nazwie reguły znajdują się spacje, a tego netsh nie przyjmuje.

Prawidłowa reguła wygląda następująco:

netsh advfirewall firewall add rule name=Allow_ICMPV4_PING protocol=icmpv4:8,any dir=in action=allow

w wersji NIE R2 wygląda to jeszcze inaczej, a wszystko opisane jest na stronie Microsoftu: http://support.microsoft.com/kb/947709

 

Data w nazwie pliku – skrypty CMD

Pisząc skrypty CMD często potrzebuję zawrzeć w nazwie generowanego pliku datę i godzinę.

Niby nic trudnego, gdyby nie to, że przed godziną 10 występują liczby bez pierwszego zera. Zamiast 09 mamy 9 – ze spacją zamiast zera.

Powoduje to wystąpienie niepotrzebnie spacji w nazwie pliku, co komplikuje nam późniejsze operacje na pliku – dodatkowe cudzysłowy itp.

Poniższy skrypt rozwiązuje tę sprawę. Jako wynik zwracana jest zmienna: DATETIME w formacie YYYYMMDDHHMMSS

REM *************** DO NOT REMOVE ***********************
REM DATETIME Environment by Ogre2000 (2011)
REM Version 1.0
REM ogre2000@ogre2000.info
REM http://galaxys.pl
REM *************** DO NOT REMOVE ***********************

REM Valid for YYYY-MM-DD
REM Change if You have other system language
set dates=%date:~0,4%%date:~5,2%%date:~8,2%
Echo %dates%

REM Test ZERO before Hour
set testtime=%time:~0,1%
echo %testtime%
if “%testtime%”==” ” GOTO BEFORETEN
GOTO AFTERTEN

:BEFORETEN
echo %time%
set times=0%time:~1,1%%time:~3,2%%time:~6,2%
Echo %times%
GOTO SETDATETIME

:AFTERTEN
echo %time%
set times=%time:~0,2%%time:~3,2%%time:~6,2%
Echo %times%
GOTO SETDATETIME

:SETDATETIME
REM echo DATA %dates%
REM echo CZAS %times%
set datetime=%dates%%times%
echo DATETIME

Którą to zmienną można użyć w dalszej części skryptu.

UWAGA: W przypadku zastosowania w systemach z innymi niż wyżej użyte ustawieniami regionalnymi należy zmienić linijkę:

set dates=%date:~0,4%%date:~5,2%%date:~8,2%

na bardziej odpowiednią.

Poniżej załączam plik: DATETIME_ENV

 

SYDI – Network Documentation Made Easy

Często brakuje dokumentacji serwerów: konfiguracji, zainstalowanego oprogramowania itp.

Projekt SYDI rozwiązuje ten problem w 100%

Projekt bazuje na skryptach VBS, a dla Linuxa na Pythonie.

Po określeniu nazwy kontrolowanej maszyny i uruchomieniu skryptu generowany jest plik w formacie MS Word’a ze szczegółowym opisem stanu serwera; zarówno sprzętowym jak i zainstalowanym oprogramowaniem. Może nam to służyć do dokumentacji konfiguracji maszyn.

W pliku sydi-server-Automation_1_2 umieściłem dodatkowy skrypt, który pozwala na skontrolowanie wielu maszyn po jednorazowym uruchomieniu skryptu CreateSydiReports.cmd.

Plik należy rozpakować w folderze, w którym znajduje się Sydi. Ustalić w pliku computerlist.dat nazwy kontrolowanych maszyn, w pliku SydiReportExec.cmd zmienić folder docelowy oraz zaREMować/odREMować linijki odpowiedzialne za format daty i uruchomić.

Po kilku/nastu minutach w folderze pojawią się pliki z raportami.

Uwaga – działa tylko na maszynie z zainstalowanym programem MS Word.

ERRORLEVEL zawsze ZERO (0) – polecenie DEL (ERASE)

W systemie Windows XP powłoka poleceń cmd.exe posiada błąd, który powoduje, że polecenie DEL (ERASE) zawsze zwraca ERRORLEVEL=0, niezależnie od wyniku działania polecenia.

Przykładem może być skrypt:

DEL nieistniejacy_plik

ECHO %ERRORLEVEL%

pause

 

Należy go zapisać w pliku costam.cmd i uruchomić

Pojawi się błąd:

Nie można odnaleźć c:\Winap\xcorder\nieistniejacy_plik.
oraz kod błedu:
c:\Winap\xcorder>ECHO 0

Jak widać ZERO, mimo niepowodzenia.

I niestety, mimo zapewnień w tym artykule http://support.microsoft.com/kb/158358, polecenie nie działa jak należy.

Na pewno dotyczy to systemów Windows XP i Vista – w pozostałych jeszcze sprawdzę.

Narzędzia administracji zdalnej serwera (RSAT) dla systemu Windows 7 – Błąd podczas instalacji

Jeżeli podczas instalacji “Narzędzia administracji zdalnej serwera dla systemu Windows 7” pojawi się błąd mówiący, że “Ta aktualizacja nie ma zastosowań dla tego komputera“, to należy sprawdzić, którą DOKŁADNIE wersję Windows 7 posiadamy.

Cytat z polskiej wersji strony MS (to ważne):

**Narzędzia administracji zdalnej serwera dla systemu Windows 7 można zainstalować TYLKO na komputerach z systemem Windows 7 w wersji Enterprise, Professional lub Ultimate.**

I to jest połowa racji, gdyż w wersji angielskiej tego samego artykułu jest napisane:
**Remote Server Administration Tools for Windows 7 can be installed ONLY on computers that are running the Enterprise, Professional, or Ultimate editions of Windows 7. This software CANNOT BE INSTALLED on computers that are running Windows 7 with Service Pack 1 (SP1). To run Remote Server Administration Tools for Windows 7 on a computer on which you want to run Windows 7 with SP1, first install Remote Server Administration Tools, and then upgrade to Service Pack 1.**

Czyli, oprócz tego co jest napisane w wersji polskiej, tutaj dodatkowo mamy informację, że dodatek ten nie może być zainstalowany gdy nasz Windows 7 jest podniesiony do wersji SP1.

Rozwiązanie: Odinstalować dodatek SP1 do Windows 7 (oznaczony jako KB976932), zainstalować powyższą poprawkę i ponownie zainstalować dodatek. Jeżeli SP1 nie mamy na dysku wystarczy uruchomić Windows Update – do ściągnięcia pozostaje nam co najmniej 500 MB.

PS. Dzwoniłem na Infolinię MS w tej sprawie. Jakież było moje zdziwienie, gdy dowiedziałem się, że ta poprawka dotyczy systemów serwerowych i jest PŁATNA. Bezpłatna jest tylko informacja na stronach internetowych MS. Nie dałem za wygraną, gdyż nie bardzo mogłem pojąć dlaczego MS chce pieniądze za własne błędy. Owszem, informacja takowa znajduje się na ich stronach ale tylko w j. angielskim. Ja żyję w Polsce, posiadam system Windows 7 w wersji polskiej, a tu zdziwko, bo technicy z MS używają wersji angielskiej.

A żeby było jeszcze lepiej. Mam kupioną wersję Windows 7 Ultimate BOX. Posiada ona dwie płytki 32 i 64 bit. W wersji 32-bit ten dodatek miałem zainstalowany domyślnie, po zakupie nowego sprzętu i reinstalacji systemu na 64-bit dodatek ten “wyparował”.

 

Lotus Notes – kill all LN processes

Jeżeli program Lotus Notes zawiesi się w trakcie swej pracy, to zwykle nie pozwala na powtórne jego uruchomienie aż do kolejnego przelogowania użytkownika.
Problemem jest to, że działają inne procesy lotusowe. Rozwiązaniem jest ubicie wszystkich procesów, a mogą być różne, które mają wspólną ścieżkę uruchomienia: właściwość ExecutablePath procesu.
Poniżej prezentuję skrypt VBS, jedynie zmodyfikowany przeze mnie.
Po uruchomieniu pojawia się okno, w którym określamy maszynę. Jeżeli jest to lokalna maszyna, wystarczy wpisać znak kropki “.”.
Można także użyć adresu IP.
' ProcessKillRemote.vbs
' Sample VBScript kill process
' Author Guy Thomas http://computerperformance.co.uk/
' Modified by Ogre2000
' Version 1.0 - March 2011
' ------------------------ -------------------------------'
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessPath, strInput, strProcessList
'strProcessPath = "'C:\\winap\\ghost11\\%'"
strProcessPath = "'C:\\Program Files\\lotus\\notes\\%'"
' Input Box to get name of machine to run the process
Do
strComputer = (InputBox(" Podaj nazwę komputera" & vbCr & "Dla lokalnego komputera wpisz znak kropki .",_
"Computer Name"))
If strComputer <> "" Then
strInput = True
End if
Loop until strInput = True
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where ExecutablePath Like " & strProcessPath)
For Each objProcess in colProcess
objProcess.Terminate()
strProcessList = strProcessList & objProcess.Name & vbCr
Next
WSCript.Echo "You killed: " & strProcessList _
& " on " & strComputer
WScript.Quit
' End of WMI Example of a Kill Process

Gotowy skrypt do ściągnięcia tutaj: KillLotusNotes