编写 PowerShell 脚本来实现远程安装软件和远程安装共享打印机
编写 PowerShell 脚本来实现远程安装软件和远程安装共享打印机

编写 PowerShell 脚本来实现远程安装软件和远程安装共享打印机

1. 从文件服务器中下载软件并保存到本地D:\Temp目录下,然后分别执行安装。

RemoteInstall.ps1代码如下:

# 软件信息

$softwareList = @{
"QQ" = "\\SX-SERVER\共享文件夹\资讯\QQ_9.9.12.25234_64bit_Setup.exe"
"微信" = "\\SX-SERVER\共享文件夹\资讯\WeChatSetup.exe"
"有道翻译" = "\\SX-SERVER\共享文件夹\资讯\YoudaoDictSetup.exe"
"搜狗输入法" = "\\SX-SERVER\共享文件夹\资讯\sogou_pinyin_guanwang_14.6a.exe"
"谷歌浏览器" = "\\SX-SERVER\共享文件夹\资讯\126.0.6478.127_chrome_installer.exe"
"Adobe Acrobat Reader" = "\\SX-SERVER\共享文件夹\资讯\AcrobatReaderDC.exe"
}

# 本地保存目录

$localSaveDir = "D:\Temp"

# 检查本地保存目录是否存在,如果不存在则创建

if (-not (Test-Path -Path $localSaveDir -PathType Container)) {
New-Item -Path $localSaveDir -ItemType Directory | Out-Null
}

# 下载和安装软件

foreach ($software in $softwareList.GetEnumerator()) {
$softwareName = $software.Key
$remoteFilePath = $software.Value
$localSavePath = Join-Path -Path $localSaveDir -ChildPath "$softwareName.exe"

# 使用WebClient对象下载文件
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($remoteFilePath, $localSavePath)

# 检查文件是否成功下载
if (Test-Path $localSavePath) {
    Write-Output "$softwareName 安装程序已成功下载到本地路径: $localSavePath"

    # 执行安装程序
    Write-Output "正在安装 $softwareName ..."
    Start-Process $localSavePath -Wait
    Write-Output "$softwareName 安装完成."
} else {
    Write-Error "下载 $softwareName 安装程序失败."
}

}

2. 远程安装共享打印机

Install-Printers.ps1代码如下:

# 定义安装打印机的函数

function InstallPrinter {
param(
[string]$PrinterName,
[string]$IPAddress
)

# 构建打印机的网络路径
$printerPath = "\\$IPAddress\$PrinterName"

# 尝试添加打印机
try {
    # 使用 Add-Printer cmdlet 添加打印机
    Add-Printer -ConnectionName $printerPath -ErrorAction Stop

    Write-Host "打印机 $PrinterName 已成功安装."
} catch {
    Write-Host "安装打印机 $PrinterName 失败: $_"
}

}

# 提示用户输入共享打印机 IP 地址

$printerIPAddress = Read-Host "请输入共享打印机 IP 地址 (例如 192.168.0.207)"

# 执行 net view 命令并获取输出

$netViewOutput = net view "\$printerIPAddress"

# 初始化打印机列表

$printers = @()

# 处理 net view 输出

foreach ($line in $netViewOutput) {
# 如果行包含 "Print" 关键字,则表示找到了共享打印机
if ($line -match "\s+Print\s+") {
# 提取打印机名称
$printerName = ($line -split '\s+Print\s+')[0].Trim()

    # 构建打印机对象并添加到列表
    $printer = New-Object PSObject -Property @{
        Name = $printerName
        IPAddress = $printerIPAddress
    }
    $printers += $printer
}

}

# 如果找到符合条件的共享资源,则输出打印机列表

if ($printers.Count -gt 0) {
Write-Host "共享打印机列表 (IP 地址为 $printerIPAddress):"
for ($i = 0; $i -lt $printers.Count; $i++) {
Write-Host "$($i+1). $($printers[$i].Name)"
}

# 提示用户选择要安装的打印机序号
$selection = Read-Host "请输入要安装的打印机序号"
$index = [int]$selection - 1

if ($index -ge 0 -and $index -lt $printers.Count) {
    $selectedPrinter = $printers[$index]

    # 调用安装打印机的函数
    InstallPrinter -PrinterName $selectedPrinter.Name -IPAddress $selectedPrinter.IPAddress
} else {
    Write-Host "无效的选择序号."
}

} else {
Write-Host "未找到在 IP 地址 $printerIPAddress 下共享的打印机."
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Title - Artist
0:00