Powershell 从导入的csv文件到多个打印服务器创建打印机
我一直在使用这个脚本,并已成功地从.csv文件中获取信息,并将其添加到一个打印服务器 现在,我在脚本中硬编码了打印服务器,它允许我在脚本中添加多个打印服务器,但我想将打印服务器添加到.csv文件中的一列,并从中读取,以消除代码中的静态服务器。以下是我所拥有的: 我正在努力解决的第二个问题是发布和不发布打印机(是否在广告中列出),我正在考虑添加另一个名为published的专栏。然后创建一个if/Then来发布或不发布**Powershell 从导入的csv文件到多个打印服务器创建打印机,powershell,printing,Powershell,Printing,我一直在使用这个脚本,并已成功地从.csv文件中获取信息,并将其添加到一个打印服务器 现在,我在脚本中硬编码了打印服务器,它允许我在脚本中添加多个打印服务器,但我想将打印服务器添加到.csv文件中的一列,并从中读取,以消除代码中的静态服务器。以下是我所拥有的: 我正在努力解决的第二个问题是发布和不发布打印机(是否在广告中列出),我正在考虑添加另一个名为published的专栏。然后创建一个if/Then来发布或不发布** foreach ($server in @("printserver1")
foreach ($server in @("printserver1")) {
foreach ($printer in @(Import-Csv C:\PrinterList.csv)) {
Add-PrinterPort -ComputerName $server -Name $printer.IPAddress -PrinterHostAddress $printer.IPAddress
Add-Printer -ComputerName $server -Name $printer.Printername -DriverName $printer.Driver -PortName $printer.IPAddress -Comment $printer.Comment -Location $printer.Location -Shared -ShareName $printer.Printername -Published
}
}
如果
PrinterList.csv
包含一个名为Publish
的列,其中包含False
或True
作为可能的值,则可以执行以下操作:
foreach ($printer in (Import-Csv C:\PrinterList.csv)) {
$Params = @{ ComputerName = $server
Name = $printer.Printername
DriverName = $printer.Driver
PortName = $printer.IPAddress
Comment = $printer.Comment
Location = $printer.Location
ShareName = $printer.Printername
}
Add-Printer @Params -Shared -Published:([bool]::Parse($printer.Publish))
}
由于Publish
是一个[switch]
参数,因此可以使用语法-Publish:$true
或-Publish:$false
。Parse()
方法将字符串值解析为布尔值
$Params
在这里不是必需的。它只是提供了更多的可读性
或者,
[System.Convert]::ToBoolean($printer.Publish)
在建议的场景中具有相同的结果,但提供了与[System.Convert]::ToBoolean(0)
返回False
和[System.Convert]::ToBoolean(1)更大的灵活性
返回True
我有一个名为Publish的列,但出现以下错误:调用带有“1”参数的“Parse”时出现异常:“字符串未被识别为有效的布尔值”。第10行char:5+Add Printer@Params-Shared-Published:([bool]::Parse($printer.Pu…+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:未指定:(:)[],MethodInvocationException+FullyQualifiedErrorId:FormatException您能告诉我发布列中有哪些值吗?它必须是True
或False
,才能像现在一样工作。我将它作为csv文件中的最后一列。该列名为Publish,现在我在其中有True。如果有关系,请全部小写完全正确。我也在使用您提供给我的原始脚本(谢谢!),我不确定是否需要添加任何其他内容。我知道您提到了-publish:$true和$false它应该适用于任何情况。您能告诉我您使用的是哪个PowerShell版本吗?