Při prvním přihlášení nového uživatele mu systém Windows vytvoří složku
C:\users\[login] a zkopíruje do ní celý obsah složky C:\users\Default
(tam je umístěna šablona uživatelského profilu).
Tuto šablonu lze nahradit již existujícím profilem (např. C:\users\host) s
potřebným uživatelským nastaven (programů, cest, barev…):
Nový uživatel bude mít po přihlášení stejná nastavení, jako původní C:\users\host.
PsExec (součást balíku
PsTools od
autora Mark Russinovich) je oficiální nástroj Microsoftu ke spuštění programu na
vzdáleném systému.
Neinstaluje se.
Ve vzdáleném počítači musíme povolit ve firewallu:
Pro případné kopírování instalačních souborů je dobré ve vzdáleném počítači povolit Sdílené složky správců:
Vše najednou skriptem psexec-povol.cmd:
netsh advfirewall firewall set rule group="Slu§ba WMI (Windows Management
Instrumentation)" new enable=yes netsh advfirewall firewall set rule group="Vzd len spr va slu§eb" new enable=yes REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 |
(diakritika odpovídá příkazovému řádku)
Příkazový řádek správce (PowerShell):
PS C:\WINDOWS\System32> cd \bat (je-li PsExec umístěn C:\BAT\PsExec.exe)
PowerShell pak vyžaduje k volání programu z aktuální složky "linuxovou" konvenci .\[program].
Spuštění příkazového řádku na vzdálené stanici pc02:
PS C:\bat>.\psexec \\pc02\ cmd
(když na vzdálené stanici existuje stejný uživatel, jako nynější uživatel lokálního příkazového řádku)
PS C:\bat>.\psexec \\pc02\ -u user -p pass cmd
(když na vzdálené stanici existuje jiný uživatel user s heslem pass)
Další příkazy jsou už vykonávány na vzdálené stanici.
Příkazový řádek vzdálené stanice ukončí příkaz exit.
Na lokálním příkazovém řádku správce (PowerShell) lze zapsat i celý příkaz:
PS C:\bat>.\psexec \\pc02\ ping pc1
PS C:\bat>.\psexec \\pc02\ cmd /c time
Dávku pro 1 stanici (v umístění C:\BAT\remote-run-multi-1pc.cmd) spustíme:
PS C:\bat> .\remote-run-multi-1pc.cmd pc01 pc02 pc03
(pc01 pc02 pc03 jsou parametry - jména vzdálených stanic)
:begin if %1=="" goto end .\psexec \\%1 C:\Windows\System32\UsoClient.exe StartInteractiveScan echo %1 errorlevel %errorlevel% >> log-WU-StartInteractiveScan.log shift goto begin :end |
:begin if %1=="" goto end @echo off copy D:\Instal\jre*.* \\%1\ADMIN$\TEMP .\psexec \\%1\ C:\Windows\TEMP\jre-8u191-windows-i586.exe INSTALLCFG=C:\Windows\TEMP\jre-inst.cfg echo %1 errorlevel %errorlevel% >> log-Java.log del /q \\%1\ADMIN$\TEMP\jre*.* >nul shift goto begin :end |
= kopírování jre*.* do vzdáleného C:\Windows\TEMP = vzdálená instalace = zápis do LOGu = smazání jre*.* ve vzdáleném C:\Windows\TEMP |
Konfigurace počítače->Šablony pro správu->Součásti systému Windows->Windows update:
příkaz | stanice provede |
c:\Windows\System32\UsoClient.exe StartInteractiveScan | vyhledá aktualizace |
c:\Windows\System32\UsoClient.exe StartInstall | ihned zahájí instalaci aktualizací |
c:\Windows\System32\UsoClient.exe StartInteractiveScan wuauclt /reportnow |
podá hlášení (serveru WSUS) (2 příkazy pod sebou) |
Stanice musí být nastaveny pro vzdálené spuštění
programu, aby bylo možné vzdálené spuštění výše uvedených příkazů k řízení
Windows Update.
Vzdáleně lze jednotlivé příkazy spouštět výše uvedenou
dávkou nebo vše pomocí PowerShell skriptu
RemoteRun.ps1:
# This script calls on remote computers of the LAN "Search",
"Install updates" and "Send instant Report" of updates to WSUS server. # On every computer must be enabled on firewall WMI, Remote administration of services and on registry LocalAccountTokenFilterPolicy=1. # WSUS server must be set on registry. # Script needs the same directory: # - program psexec (Mark Russinovich) # - list names of PC in "PcList.txt" (names of PC in 1 line separated by spaces). # http://vyuka.jihlavsko.cz/administrator/ # Jiri Hrodek 2023 $menu=@" 1 Search updates 2 Install updates 3 Send Report to WSUS 4 Chkdsk C: after reboot 5 dism /restorehealth 6 sfc /scannow R Reboot O PowerOff Q Quit Select number or Q to quit "@ cls Write-Host "-------------------WHAT TO DO for computers below?-------------------" -ForegroundColor Cyan $column = (Get-Content PcList.txt) -split '\s+|\t+' Write-Host "Computers: "$column $r = Read-Host $menu Switch ($r) { "1" { Add-Content log-WU-StartInteractiveScan.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line C:\Windows\System32\UsoClient.exe StartInteractiveScan Add-Content log-WU-StartInteractiveScan.log $line"`t errorlevel "$lastexitcode } } "2" { Add-Content log-WU-StartInstall.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line C:\Windows\System32\UsoClient.exe StartInstall Add-Content log-WU-StartInstall.log $line"`t errorlevel "$lastexitcode } } "3" { Add-Content log-WU-Report-send.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line wuauclt /reportnow .\psexec64 \\$line C:\Windows\System32\UsoClient.exe StartInteractiveScan Add-Content log-WU-Report-send.log $line"`t errorlevel "$lastexitcode } } "4" { Add-Content log-Chkdsk.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line cmd /c "echo y.|chkdsk c: /f" Add-Content log-Chkdsk.log $line"`t errorlevel "$lastexitcode } } "5" { Add-Content log-Dism-restoreH.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line cmd /c "start cmd /c C:\Windows\System32\dism.exe /online /cleanup-image /restorehealth" Add-Content log-Sfc-Scannow.log $line"`t errorlevel "$lastexitcode } } "6" { Add-Content log-Sfc-Scannow.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line cmd /c "start cmd /c C:\Windows\System32\sfc.exe /scannow" Add-Content log-Sfc-Scannow.log $line"`t errorlevel "$lastexitcode } } "R" { Add-Content log-Reboot.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line C:\Windows\System32\shutdown.exe -r -t 00 Add-Content log-Reboot.log $line"`t errorlevel "$lastexitcode } } "O" { Add-Content log-PowerOff.log (Get-Date -Format g) foreach($line in $column) { .\psexec64 \\$line C:\Windows\System32\shutdown.exe -s -t 00 Add-Content log-PowerOff.log $line"`t errorlevel "$lastexitcode } } "Q" { Write-Host "Quitting" -ForegroundColor Green } default { Write-Host "End without action." -ForegroundColor Yellow } } #end switch |
Skript generuje LOG s výpisem errorlevel pro každý ošetřený počítač.
Počítač při startu očekává operační systém buď na interním disku, nebo na
vloženém médiu (USB disk, CD …) - závisí na nastavení BIOSu.
Po startu počítače lze většinou klávesovou kombinací vyvolat volbu, odkud
operační systém načíst (závisí na nastavení BIOSu). Není-li nastaveno Secure
boot=ON, lze tak operašní systém načíst i z speciálně připraveného USB disku.
Operační systém k umístění na USB disk:
Hiren's BootCD,
Windows PE …
Takový operační systém mívá omezení, lze jej stáhnout ve formě ISO obrazu CD či
image pro USB disk. Počítač se s ním chová většinou podobně, jako Windos.
Stažený obraz (OSO, image) se na USB disk zapíše speciálním způsobem např. programem Rufus.
IP adesa