将PowerShell输出的每行存储为同一变量

blmhpbnm  于 2023-01-13  发布在  Shell
关注(0)|答案(1)|浏览(129)

因此,我尝试从另一台机器远程删除一些手动添加的打印机。问题是,我不想删除所有打印机,只删除名称中有“HJK”“LSG”的打印机。
所以,为了得到名单,我做了:

Invoke-Command AaronsComputer -ScriptBlock {get-printer | select name -expandproperty name}

要删除打印机,我会执行以下操作:

Invoke-Command AaronsComputer -ScriptBlock {Remove-Printer -Name "Full Printer Name Here"}

我知道我可以将get-printer的结果导出为CSV以更好地使用它,但我宁愿不这样做,并让这一切都发生在Powershell中。
我认为这几行沿着东西会起作用,但我不认为PowerShell智能地将每行视为变量。

$PrinterResults = Invoke-Command $Computer -ScriptBlock {get-printer | select name -expandproperty name}

foreach $PrinterResults

if ($PrinterResults -contains "HJK") { 
  Invoke-Command $Computer -ScriptBlock {Remove-Printer -Name "$PrinterResults"}
}

if ($PrinterResults -contains "LSG") { 
  Invoke-Command $Computer -ScriptBlock {Remove-Printer -Name "$PrinterResults"}
}

最终目标是我可以一次删除所有符合条件的打印机。

o2rvlv0m

o2rvlv0m1#

设法做到这一点,在最后与以下:

Invoke-Command $Computer -ScriptBlock {
$Printers = get-printer | Where-Object {($_.name -like '*HJK*') -or ($_.name -like '*LSG*')} | Select Name -expandproperty name
foreach ($PrinterName in $Printers)
{
    printui.exe /dl /n $PrinterName
}
}

相关问题