Windows Server R2
Dozent: Herr Frank Röder roeder@iteache-online.de
23.04. - 27.04.2012
1. Tag
Den Windows Editor aus der PowerShell starten um damit die Konfigurationsdatei profile.ps1 zu erstellen.
PS C:\Windows\system32> notepad $env:USERPROFILE\documents\windowspowershell\profile.ps1
Eine Logdatei erstellen die die Eingaben der PowerShell mitprotokoliert.
PS C:\Windows\system32> Start-Transcript -Append -Path ("$env:USERPROFILE\documents\"+(((Get-Date).DayOfWeek).tostring())+".txt")
Das PowerShell Fenster leeren (wie cls)
PS C:\Windows\system32> Clear-Host
Ein Snapin integriern
PS C:\Users\Admin> Add-PSSnapin pseventing
Hilfe erhalten
PS C:\Users\Admin> get-help
Die Befehle die sich mit eventlog befassen finden
PS C:\> Get-Command *eventlog*
PS C:\> Get-Command *event* -CommandType cmdlet
Hilfe bekommen
PS C:\> Get-Help Get-EventLog
PS C:\> Get-Help Get-EventLog -Detailed
PS C:\> Get-Help Get-EventLog -Full
PS C:\> Get-Help Get-EventLog -Examples
PS C:\> Get-Help Get-EventLog -Parameter logname
PS C:\> Get-Help Get-EventLog -Parameter *
PS C:\> Get-Help about_*
PS C:\> Get-Help about_Comparison_operators
Ausgabe Seitenweise
PS C:\> Get-Help about_Comparison_operators | Out-Host -Paging
Eine Befehl nicht wirklich ausführen, nur prüfen was wäre wenn.
PS C:\> Get-Process pow* | Stop-Process -whatif WhatIf: Ausführen des Vorgangs "Stop-Process" für das Ziel "powershell (2224)".
PS C:\> Get-Date | Get-Member
PS C:\> (Get-Date).addhours(-24) Sonntag, 22. April 2012 14:35:20
Die Ereignisse der letzten 24 Std. von den beiden PC holen.
PS C:\Users\Administrator> Get-EventLog system -After (Get-Date).addhours(-24) -ComputerName DC1-PSH,CL1-PSH
2. Tag
PS C:\Users\Administrator> Get-Command *service* -CommandType cmdlet
PS C:\Users\Administrator> $Host.UI.RawUI
PS C:\Users\Administrator> notepad
PS C:\Users\Administrator> $meinnotepad = Start-Process notepad
PS C:\Users\Administrator> $meinnotepad
PS C:\Users\Administrator> $meinnotepad = Start-Process notepad -PassThru
PS C:\Users\Administrator> $meinnotepad
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
57 7 1604 5496 79 0,11 2052 notepad
PS C:\Users\Administrator> New-Alias np notepad.exe PS C:\Users\Administrator> np PS C:\Users\Administrator> Export-Alias $env:USERPROFILE\documents\alias.txt PS C:\Users\Administrator> np $env:USERPROFILE\documents\alias.txt
PS C:\Users\Administrator> dir function:
CommandType Name Definition
----------- ---- ----------
Function A: Set-Location A:
Function B: Set-Location B:
Function BinIchAdmin ...
Function C: Set-Location C:
Function cd.. Set-Location ..
Function cd\ Set-Location \
Function Clear-Host $space = New-Object System.Management.Automation.Host.Buff...
Function D: Set-Location D:
Function Disable-PSRemoting ...
Function E: Set-Location E:
Function F: Set-Location F:
Function G: Set-Location G:
Function Get-Verb ...
Function H: Set-Location H:
Function help ...
Function I: Set-Location I:
Function ImportSystemModules ...
Function J: Set-Location J:
Function K: Set-Location K:
Function L: Set-Location L:
Function M: Set-Location M:
Function mkdir ...
Function more param([string[]]$paths)...
Function N: Set-Location N:
Function O: Set-Location O:
Function P: Set-Location P:
Function prompt $(if (test-path variable:/PSDebugContext) { '[DBG]: ' } el...
Function Q: Set-Location Q:
Function R: Set-Location R:
Function S: Set-Location S:
Function T: Set-Location T:
Function TabExpansion ...
Function U: Set-Location U:
Function V: Set-Location V:
Function W: Set-Location W:
Function X: Set-Location X:
Function Y: Set-Location Y:
Function Z: Set-Location Z:
PS C:\Users\Administrator> function sayhello {write-host Hallo $args[0] -foregroundcolor "red"}
PS C:\Users\Administrator> sayhello Timo
Hallo Timo
PS C:\Users\Administrator> "Ein String mit mit `"doppelten`" Anführungszeichen" Ein String mit mit "doppelten" Anführungszeichen
PS C:\Users\Administrator> write-host "Hallo" write-host "Teilnehmer" Hallo write-host Teilnehmer PS C:\Users\Administrator> write-host "Hallo"; write-host "Teilnehmer" Hallo Teilnehmer
PS C:\Users\Administrator> Get-PSProvider
Name Capabilities Drives
---- ------------ ------
WSMan Credentials {WSMan}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, E, A, D}
Function ShouldProcess {Function}
Registry ShouldProcess, Transactions {HKLM, HKCU}
Variable ShouldProcess {Variable}
Certificate ShouldProcess {cert}
PS C:\Users\Administrator> Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- A FileSystem A:\ Alias Alias C 10,36 116,54 FileSystem C:\ Users\Administrator cert Certificate \ D ,27 FileSystem D:\ E ,07 7,93 FileSystem E:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan
PS C:\windows> Get-ChildItem $env:windir\*.log -Recurse
Verzeichnis: C:\Windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 16.05.2011 10:20 1774 DtcInstall.log
-a--- 24.04.2012 07:41 14299 setupact.log
-a--- 14.07.2009 06:51 0 setuperr.log
-a--- 16.05.2011 10:20 1313 TSSysprep.log
-a--- 16.05.2011 10:20 5460 vmgcoinstall.log
-a--- 24.04.2012 11:13 224777 WindowsUpdate.log
PS C:\windows> Get-ChildItem $env:windir\ *.log -Recurse
PS C:\windows> Get-ChildItem C:\Users\ -Include *.jpg, *.bmp -Recurse
PS C:\windows> Get-ChildItem hklm:
Hive: HKEY_LOCAL_MACHINE
SKC VC Name Property
--- -- ---- --------
2 0 BCD00000000 {}
4 0 HARDWARE {}
1 0 SAM {}
Get-ChildItem : Der angeforderte Registrierungszugriff ist unzulässig.
Bei Zeile:1 Zeichen:14
+ Get-ChildItem <<<< hklm:
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACHINE\SECURITY:String) [Get-ChildItem], SecurityException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.GetChildItemCommand
10 0 SOFTWARE {}
8 0 SYSTEM {}
PS C:\windows> Get-ChildItem HKLM:\SYSTEM\CurrentControlSet\services
PS C:\windows> Get-ChildItem HKLM:\SYSTEM\CurrentControlSet\services\Spooler
PS C:\windows> Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | ft displayname,publisher
PS C:\windows> New-ItemProperty -Path HKCU:\Software\Testschlüssel -Name DWORD -Value 0x1234 -PropertyType DWORD
PS C:\windows> New-ItemProperty -Path HKCU:\Software\Testschlüssel -Name MULTISTRING -Value eins,zwei,drei -PropertyType MULTISTRING
PS C:\windows> Set-ItemProperty -Path HKCU:\Software\Testschlüssel -Name MULTISTRING -Value vier,fünf,sechs -PropertyType MULTISTRING
Registry ändern
Aus der Registry auslesen von welchen Diensten der Druckerspooler abhängig ist und dann eine Abhängigkeit vom Systemdienst eintragen. Einmal auslesen und dann in eine Variable schreiben
PS C:\windows> (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\Spooler).DependOnService RPCSS http PS C:\windows> $Service = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\Spooler).DependOnService;
Erste Lösung:
PS C:\windows> $Service = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\Spooler).DependOnService;Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\Spooler -Name DependOnService -Value $Service[0],$Service[1],LanmanServer PS C:\windows> (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\Spooler).DependOnService RPCSS http LanmanServer
oder etwas kürzer
PS C:\windows> $Service = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\Spooler).DependOnService;Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\Spooler -Name DependOnService -Value ($Service+="LanmanServer")
oder ohne den Zwischenschritt einer Variablen
PS C:\windows> Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\Spooler -Name DependOnService -Value ((Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\Spooler).DependOnService+="LanmanServer")
