Standarddrucker mit Powershell ändern unter Windows

Um den Standarddrucker zu ändern muss zunächst ein Registrierungswert gesetzt werden:

reg add "HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LegacyDefaultPrinterMode /d 1 /t REG_DWORD /f

Zum Schluss muss nun noch der entsprechende Drucker ausgewählt werden:

gwmi win32_Printer -Filter "Name like '%Kyocera%'" | select -First 1 | %{$_.SetDefaultPrinter()

Mit dem Befehl wird nach einem bestimmten Drucker gefiltert der installiert ist. In meinem Beispiel ist es ein Kyocera Drucker.

Netzwerkdrucker auf entfernten Computern installieren

Um einen Netzwerkdrucker lokal auf einem Rechner zu installieren kann es sinnvoll sein, diesen Prozess zu automatisieren.

  1. Treiber herunterladen
  2. Treiber via pnputil.exe dem Treiberstorage bekannt machen
  3. Unter “C:\Windows\System32\DriverStore\FileRepository” befindet sich dann ein neuer Treiberordner
  4. In der .inf Datei steht die Bezeichnung zum Drucker drin. Diese MUSS bei Add-PrinterDriver -Name “” ZWINGEND den Druckernamen beinhalten
  5. Auch unter Add-Printer -Drivername “” muss der Name des Treibers gezielt angesteuert werden
pnputil.exe /a "C:\Install\OEMSETUP.INF"
Add-PrinterDriver -Name "Kyocera ECOSYS P6230cdn KX" -InfPath "C:\Windows\System32\DriverStore\FileRepository\oemsetup.inf_amd64_2b3fc9f872db355b\OEMSETUP.INF"
Add-PrinterPort -Name "LAN-PORT" -PrinterHostAddress "10.0.0.0"
Add-Printer -DriverName "Kyocera ECOSYS P6230cdn KX" -Name "ECOSYS P6230cdn" -PortName "LAN-PORT"

Netzlaufwerk mit der Powershell hinzufügen

Um ein Netzlaufwerk über Powershell hinzuzufügen wird folgender Befehl benötigt:

New-PSDrive –Name "Z" –PSProvider FileSystem –Root "\\10.0.0.0\Share"

Mit dem Schalter -Persist kann das Netzlaufwerk permanent verbunden werden.

Falls Zugangsdatendaten benötigt werden, muss zunächst ein Credentials Objekt angelegt werden:

$password = ConvertTo-SecureString "Password123!" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential(Benutzer,$password)

Nun kann das Objekt an den PSDrive Befehl angehängt werden:

New-PSDrive –Name "Z" –PSProvider FileSystem –Root "\\10.0.0.0\Share" -Credential $credentials

Entfernt werden kann das Laufwerk mit folgendem Befehl:

Remove-PSDrive –Name "Z"

Windows Apps Installieren mit der Powershell

Es soll eine App aus dem Windows Store auf viele Computer gleichzeitig installiert werden. Dabei geht man nun folgendermaßen vor:

Im Beispiel wird die Applikation Netflix installiert:

https://www.microsoft.com/de-de/p/netflix/9wzdncrfj3tj?activetab=pivot:overviewtab

Diesen Link gebt ihr auf folgender Seite ein:

https://store.rg-adguard.net/#google_vignette

Nach Eingabe des Links erhaltet ihr viele verschiedene Treffer. Am besten wird hier eine aktuelle Datei mit entsprechender Größe mit der Endung .app .appx oder .appxbundle ausgewählt

Nun erhält man eine Vielzahl an Einträgen.

Es kann ggf. sein, dass der Download als unsicher betrachtet wird vom Browser und blockiert wird.

Nach dem Herunterladen der App, lässt sich diese nun installieren:

DISM.EXE /ONLINE /Add-ProvisionedAppxPackage /PackagePath:"C:\Install\4DF9E0F8.Netflix_4.15.0.62_arm__mcm4njqhnhss8.Appx" /SkipLicense

Es kann durchaus noch sein, dass die zu installierende App eine bestimmte Version von VCLibs oder eines Frameworks benötigt. Dies MUSS VOR der Installation der eigentlichen App geschehen. Auf der oben genannten Seite findet man aber auch die benötigten Versionen von VCLibs und der unterschiedlichen Frameworks.

DISM.EXE /ONLINE /Add-ProvisionedAppxPackage /PackagePath:"C:\Install\Schule\StadtBS\APP-Installation\Book Creator\Microsoft.VCLibs.120.00_12.0.21005.1_x64__8wekyb3d8bbwe.Appx" /SkipLicense
DISM.EXE /ONLINE /Add-ProvisionedAppxPackage /PackagePath:"C:\Install\Schule\StadtBS\APP-Installation\Book Creator\Microsoft.NET.Native.Framework.1.3_1.3.24201.0_x86__8wekyb3d8bbwe.Appx" /SkipLicense

Bis hierhin hat die Anleitung, eine Installation für ALLE Benutzer des entsprechenden Rechners beschrieben. Eine Installation nur für einen einzelnen Benutzer ist nach folgendem Schema möglich:

Add-AppxPackage -Path "C:\Install\4DF9E0F8.Netflix_4.15.0.62_arm__mcm4njqhnhss8.Appx"

Powershell Funktion zur Überprüfung ob ein bestimmter Registrierungswert vorhanden ist

# Funktion zum Testen ob ein Registrywert vorhanden ist
function Test-RegistryValue {

 param (

 [parameter(Mandatory=$true)]
 [ValidateNotNullOrEmpty()]$Path,

 [parameter(Mandatory=$true)]
 [ValidateNotNullOrEmpty()]$Value
)

try {

Get-ItemProperty -Path $Path | Select-Object -ExpandProperty $Value -ErrorAction Stop | Out-Null
return $true
}

catch {

return $false

}

}

Danach könnt ihr die Funktion überall in eurem Skript nach folgender Syntax nutzen:

If(Test-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Value AutoLogonCount)
    {

      Was Passieren soll folgt hier drin
    }