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) } }