你好,晚上好。
直到有人比我聪明得多(不会很长),我可以尝试为您指明正确的方向。
你实际上有几个选择。您可以使用依赖于布尔值(布尔值 - 只是一种时髦的说法)的条件语句,并Where-Object
结合一些运算符。
让我先发布这个,这样它就不会在我身上崩溃(我的屏幕裂了,它的表现很不稳定)。我们将从Switch
声明开始。如果满足条件,做某事。
$computer = (gwmi Win32_ComputerSystem).Manufacturer + " " + (gwmi Win32_ComputerSystem).Model
$drivers = Get-ChildItem \\zapp\pc\!Drivers | Select-Object -ExpandProperty Name
Switch ($drivers){
"$computer" {"Found: $_" }
}
我回来了!所以,回到我离开的地方……你可以使用 switch 语句,它会在满足特定条件时执行某些操作;在这种情况下,一旦它检测到字符串与您要查找的内容匹配,它就会执行从远程 PC 到本地 PC 的复制项。见下文:
$computer = (gwmi Win32_ComputerSystem).Manufacturer + " " + (gwmi Win32_ComputerSystem).Model
Switch (Get-ChildItem \\zapp\pc\!Drivers){
"$computer" {Copy-Item -Path $_.FullName -Destination C:\DriverStore }
}
使用Foreach
循环,我们可以遍历每个文件并尝试使用语句匹配您传递给它的值,一旦找到就在远程 PC 上if
执行 a 。Copy-Item
Foreach($file in (Get-ChildItem \\zapp\pc\!Drivers)){
if($file -match $computer){ Copy-Item -Path $file.FullName -Destination C:\DriverStore}
}
接下来,我们只是在操作员Where-Object
的帮助下将文件传递给-match
,将为其指定的值与左侧的对象进行匹配。最后使用Foreach-Object
cmdlet(不要与 混淆Foreach
)和参数-Process
来运行输入对象内的每个元素。然后将与您的 PC 匹配的文件夹从远程 PC 复制到您的文件夹。
$computer = (gwmi Win32_ComputerSystem).Manufacturer + " " + (gwmi Win32_ComputerSystem).Model
Get-ChildItem \\zapp\pc\!Drivers | Where-Object {$_.Name -match $computer} |ForEach-Object -process{ Copy-Item -Path $_.fullname -Destination C:\DriverStore}
希望这是有道理的,可以让你走上正确的道路。为了简单起见,我没有提到其他几个,但@Lee_Daily 确实提到了.Where()
在这种情况下也可以使用的方法。