Мне была задана задача переписать старый сценарий в PowerShell из VBScript. Этот сценарий в основном просто читает строку текстового файла и устанавливает принтер, соответствующий этой строке, перед удалением его снова, так что только драйвер установлен.Альтернативы для добавления принтера, удаления-принтера и т. Д. Для Windows Server 2008 R2
Этот скрипт запускается каждый день на наших виртуальных терминальных серверах Citrix, таким образом мы можем обновлять драйверы независимо от текущего выпущенного изображения.
Вот что окончательный сценарий выглядит следующим образом:
# Variables
Param([string]$FileName)
$DriverList = Get-Content $FileName
$ComputerName = hostname
$LogFile = "C:\Windows\Logs\PrinterCreation.log"
$SeperatorL = "═══════════════════════════════════════════════════════════════════════════════════════════════════════"
$SeperatorS = "═══════════════════════════════════════════"
$StartDate = Get-Date -Format "dd.MMM.yyyy HH:mm:ss"
# Log Header
"$SeperatorL" > $LogFile
" ServerName: $ComputerName" >> $LogFile
" DriverList: $FileName" >> $LogFile
" StartTime: $StartDate" >> $LogFile
"$SeperatorL" >> $LogFile
"" >> $LogFile
"Beginning driver instalation process:" >> $LogFile
# Process the "$DriverList" by installing each printer on the list and deleting the connection afterwards
foreach ($line in $DriverList) {
"$SeperatorL" >> $LogFile
" Print driver Installation: $line" >> $LogFile
# Installing the printer
try {
Add-Printer -ConnectionName $line -ErrorAction Stop
Start-Sleep -s 10
# Deleting the Printer
try {
Remove-Printer -Name $line -ErrorAction Stop
" Printer installation successfull." >> $LogFile
} catch {
" INSTALATION NOT COMPLETE: Printer was installed but connection could not be removed!" >> $LogFile
}
} catch [Microsoft.Management.Infrastructure.CimException] {
" INSTALATION FAILED: Printer driver cannot be found or does not exist!" >> $LogFile
} finally {
Start-Sleep -s 5
}
}
# Log Footnote
$EndDate = Get-Date -Format "HH:mm:ss"
"$SeperatorL" >> $LogFile
"" >> $LogFile
"Instalation process completed:" >> $LogFile
"$SeperatorS" >> $LogFile
" End Time: $EndDate" >> $LogFile
"$SeperatorS" >> $LogFile
Она вызывается так: .\scriptfilename.ps1 ".\Driverlist.txt"
Список водителя только состоит из линий, как это: "\\spbdn140\KM_Universal_PCL"
Проблемы в коротком
При написании этого сценария я не осознал что модуль управления принтером работает только с Win 8 и Server 2012. Наши серверы терминалов работают на сервере 2008.
Есть ли способ достичь того, что я пытаюсь сделать с доступной информацией (список драйверов) в PowerShell v3-4 на Server 2008?
Опять же, конечным результатом должно быть только то, что драйверы установлены на терминальных серверах, только используя предоставленную информацию.