PowerShell und CMD
PS Skriptausführung zulassen
Die PowerShell verhindert zunächst das Auführen von Skripten. Dies kann über folgendes Kommando beseitigt werden:
Lokale Skripte zulassen, von fremden Rechnern nur signierte Skripte
Set-ExecutionPolicy RemoteSigned
Sicherheitsstufe wieder anheben:
Set-ExecutionPolicy AllSigned
Dienste finden, beenden und neu starten
PS > get-service | where-object{ $_.status -eq "Running" -and $_.Displayname -like "*sqlexpress*"} Status Name DisplayName ------ ---- ----------- Running MSSQL$SQLEXPRESS SQL Server (SQLEXPRESS) PS > get-service | where-object{ $_.Displayname -like "*sqlexpress*"} | stop-service PS > get-service | where-object{ $_.Displayname -like "*sqlexpress*"} | start-service
es funktioniert auch
PS > stop-service -Displayname *sqlexpress* PS > start-service -Displayname *sqlexpress*
Das ganze alternativ mit cmd
C:\>net start Folgende Windows-Dienste sind gestartet: ... Shellhardwareerkennung Sicherheitskontenverwaltung SQL Server (SQLEXPRESS) SQL Server VSS Writer Systemereignisbenachrichtigung Systemwiederherstellungsdienst Taskplaner ... Der Befehl wurde erfolgreich ausgeführt. C:\>net stop "SQL Server (SQLEXPRESS)" SQL Server (SQLEXPRESS) wird beendet. SQL Server (SQLEXPRESS) wurde erfolgreich beendet. C:\>net start "SQL Server (SQLEXPRESS)" SQL Server (SQLEXPRESS) wird gestartet. SQL Server (SQLEXPRESS) wurde erfolgreich gestartet.
Dienste verwalten mit cmd
C:\>sc
Datum formatiert in Variable speichern und als Dateiname verwenden
PS > $a = get-date -uformat "%Y%m%d" PS > $b = $a + "_Dateiname.txt" PS > $b 20110829_Dateiname.txt PS > copy-item Dateiname.txt -destination $b
Excel-Dateien erstellen und befüllen
$a = New-Object -comobject Excel.Application $a.Visible = $True $b = $a.Workbooks.Add() $c = $b.Worksheets.Item(1) $c.Cells.Item(1,1) = "A value in cell A1." $b.SaveAs("C:\Scripts\Test.xls") $a.Quit()
CSV-Datei einlesen und ausgewählte Spalten als GridView darstellen
PS > Import-Csv .\attribTable.csv -delimiter ";" | Select-Object -p x ,style, fill, stroke | Out-GridView
Die hier ausgelesene CSV-Datei hatte folgende Struktur:
x;style;fill;pattern;end;stroke;size;transparency;points;... line;True;True;True;True;True;False;False;False;False;Fal... polyline;True;False;True;False;True;True;True;True;True;T... polygon;True;False;True;False;True;False;True;True;False;...
Datum mit date ermitteln und umformatieren
REM date /t gibt ein Datum in der Form DD.MM.JJJJ REM mit Hilfe der FOR-Schleife wird dieses Datum an den Punkten (delims=.) aufgetrennt und REM die einzelnen Bestandteile neu angeordnet wieder ausgegeben (set DATUM=%%c%%b%%a). REM set DATUM=%%c%%b%%a ergibt ein Datum in der Form JJJJMMDD FOR /F "tokens=1,2,3 delims=. " %%a IN ('date /t') DO set DATUM=%%c%%b%%a
Zerlegen von Ausgaben auf der Kommandozeile
Folgende Kommandozeile ruft den Befehl dir *.dll auf, und reduziert über eine Pipe-Umleitung an findstr /i „text“ den Umfang der Ausgabe auf die Zeilen, die den String „text“ enthalten. Über die for-Schleife wird nun jede Zeile in bis zu 7 Teile zerlegt, wobei mit „delims=.: “ der Punkt, der Doppelpunkt und das Leerzeichen als Trennzeichen definiert werden. Es sind noch mehr Teile denkbar, die genauen Grenzen können über „for /?“ abgefragt werden. Am Ende kann auf die einzelnen Bestandteile über die implizit definierten Variablen %i, %j, %k… zugegriffen werden. Mit welchem Namen die Variablenreihe beginnt wird direkt hinter delims= mit %i festgelegt. HINWEIS: Um dies in einer batch-Datei zu verwenden müssen alle % in %% umgewandelt werden.
REM for /f "tokens=1,2,3,4,5,6,7 delims=.: " %i in ('dir *.dll^|findstr /i "text"') do @echo %i %j %k %l %m %n %o REM
Admin Shell CMD mit anderen Farben starten
- Batchfile erstellen mit folgendem Inhalt
@echo off whoami /groups | find "S-1-16-12288" > nul if not errorlevel 1 ( color cA )
- Festlegen, dass das Batchfile beim starten einer commandline cmd gestartet wird. Hierzu in der Registry folgende Zeichenkette eintragen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun = <Pfad zur Batchdatei>
Fertig!
WIN32API Funktionen in der Powershell nutzen
Eine Klasse „Win32“ wird hier innerhalb eines HERE-DOCs (@''@) angelegt und mittels Add-Type als neuer Typ registriert.
Anschließend kann die public-Methode genutzt werden:
$code = @' using System; using System.Runtime.InteropServices; public static class Win32{ [DllImport("kernel32.dll", SetLastError=true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool Beep(uint dwFreq, uint dwDuration); } '@ Add-Type $code [Win32]::Beep(440, 500) foreach ($i in 2000..3000) { if($i % 100) {} else { Write-Host "$i"; [Win32]::Beep($i,200) } }