Commit initial
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
# Generated by ImpTune — Detection script for {{ printer_name }}
|
||||
$printer = Get-Printer -Name "{{ printer_name }}" -ErrorAction SilentlyContinue
|
||||
if ($printer) {
|
||||
Write-Output "Installed: {{ printer_name }}"
|
||||
exit 0
|
||||
} else {
|
||||
exit 1
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
# Generated by ImpTune — Printer: {{ printer_name }}
|
||||
# Install command: powershell.exe -NoProfile -ExecutionPolicy Bypass -File "install.ps1"
|
||||
#
|
||||
# This script installs the printer "{{ printer_name }}" via Intune Win32 app deployment.
|
||||
# It must be launched with -File (not -Command) so $PSScriptRoot is populated.
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# WOW64 Guard — relaunch in 64-bit PowerShell if running under WOW64 (Intune
|
||||
# runs Win32 app scripts in a 32-bit process; pnputil is 64-bit only).
|
||||
# This block MUST be the first executable code in the script.
|
||||
# ---------------------------------------------------------------------------
|
||||
if ($env:PROCESSOR_ARCHITECTURE -eq "x86" -and $env:PROCESSOR_ARCHITEW6432) {
|
||||
$ps64 = "$env:WINDIR\SysNative\WindowsPowerShell\v1.0\powershell.exe"
|
||||
& $ps64 -NoProfile -ExecutionPolicy Bypass -File "$PSCommandPath" @args
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# SYSTEM vs User context detection + UAC self-elevation
|
||||
# Skip elevation when already running as SYSTEM (Intune MDM context).
|
||||
# ---------------------------------------------------------------------------
|
||||
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$isSystem = $id.IsSystem
|
||||
$isAdmin = ([System.Security.Principal.WindowsPrincipal]$id).IsInRole(
|
||||
[System.Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
|
||||
if (-not $isSystem -and -not $isAdmin) {
|
||||
Start-Process powershell.exe `
|
||||
-Verb Runas `
|
||||
-ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" `
|
||||
-Wait
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# pnputil two-step driver staging
|
||||
# Step 1: Stage INF + all associated files into Windows Driver Store
|
||||
# Step 2: Install the named driver from the Driver Store
|
||||
# ---------------------------------------------------------------------------
|
||||
pnputil.exe /add-driver "$PSScriptRoot\drivers\{{ inf_filename }}" /install
|
||||
|
||||
Add-PrinterDriver -Name "{{ driver_name }}"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Idempotent port creation
|
||||
# ---------------------------------------------------------------------------
|
||||
if (-not (Get-PrinterPort -Name "{{ port_name }}" -ErrorAction SilentlyContinue)) {
|
||||
Add-PrinterPort -Name "{{ port_name }}" -PrinterHostAddress "{{ ip_address }}"
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Idempotent printer creation
|
||||
# ---------------------------------------------------------------------------
|
||||
if (-not (Get-Printer -Name "{{ printer_name }}" -ErrorAction SilentlyContinue)) {
|
||||
Add-Printer -Name "{{ printer_name }}" `
|
||||
-PortName "{{ port_name }}" `
|
||||
-DriverName "{{ driver_name }}"
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Configure print settings
|
||||
# ---------------------------------------------------------------------------
|
||||
Set-PrintConfiguration -PrinterName "{{ printer_name }}" `
|
||||
-DuplexingMode {{ duplex_mode }} `
|
||||
-Color ${{ color }} `
|
||||
-PaperSize {{ paper_size }} `
|
||||
-Collate ${{ collate }}
|
||||
@@ -0,0 +1,4 @@
|
||||
# Generated by ImpTune — Uninstall script for {{ printer_name }}
|
||||
Remove-Printer -Name "{{ printer_name }}" -ErrorAction SilentlyContinue
|
||||
Remove-PrinterDriver -Name "{{ driver_name }}" -ErrorAction SilentlyContinue
|
||||
Remove-PrinterPort -Name "{{ port_name }}" -ErrorAction SilentlyContinue
|
||||
Reference in New Issue
Block a user