Powershell 使用 Like Wildcard 匹配来自 2 个容器的输入
Powershell Match input from 2 containers with Like Wildcard
Powershell 的新手,我有点卡住了。
我想用 WMI 获取所有 SCCM Tasksequnece,并将它们与图像名称匹配
$TaskSequence = Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_TaskSequencePackage -ComputerName $SiteServer
$ImagePackage = Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_ImagePackage -ComputerName $SiteServer
Output of $TaskSequence.name
is
Windows Server 2012 R2 X64
Windows 10 Enterprise x64 USMT Full OS
Upgrade 1703
Windows 10 Enterprise x64 USMT Hardlinks
Windows 7 Enterprise x64 en-US
Windows 10 Enterprise x64 1703 en-US
Windows Server 2016
Output of $ImagePackage.name
is
Windows Server 2016 x64
Windows 10 Enterprise x64
我试过这个 foreach 循环,但似乎无法让它工作,这个 post 7 个提示,应该只有 4 个提示,3 Windows 10 和 1 Windows 服务器 2016
foreach ($TS in $TaskSequence ) {
Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_TaskSequencePackage -ComputerName $SiteServer |
ForEach-Object{
Get-WmiObject SMS_ImagePackage -Namespace "root\SMS\site_$($SiteCode)" -ComputerName $SiteServer | Where-Object { $_.name -like "*$($TS.Name)*"}
}
}
编辑:
问题稍微改变后,这里是新代码:
$SiteCode = "SiteCode"
$SiteServer = "Server"
$TaskSequence = (Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_TaskSequencePackage -ComputerName $SiteServer)
$ImagePackage = (Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_ImagePackage -ComputerName $SiteServer)
Foreach($Task in $TaskSequence){
foreach($Image in $ImagePackage){
if($Task.Name -like "*$($Image.Name)*" -or $Image.Name -like "*$($Task.Name)*"){
$Task
#I have no idea what you want to do with this object
}
}
}
Powershell 的新手,我有点卡住了。
我想用 WMI 获取所有 SCCM Tasksequnece,并将它们与图像名称匹配
$TaskSequence = Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_TaskSequencePackage -ComputerName $SiteServer
$ImagePackage = Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_ImagePackage -ComputerName $SiteServer
Output of
$TaskSequence.name
is
Windows Server 2012 R2 X64
Windows 10 Enterprise x64 USMT Full OS
Upgrade 1703
Windows 10 Enterprise x64 USMT Hardlinks
Windows 7 Enterprise x64 en-US
Windows 10 Enterprise x64 1703 en-US
Windows Server 2016Output of
$ImagePackage.name
is
Windows Server 2016 x64
Windows 10 Enterprise x64
我试过这个 foreach 循环,但似乎无法让它工作,这个 post 7 个提示,应该只有 4 个提示,3 Windows 10 和 1 Windows 服务器 2016
foreach ($TS in $TaskSequence ) {
Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_TaskSequencePackage -ComputerName $SiteServer |
ForEach-Object{
Get-WmiObject SMS_ImagePackage -Namespace "root\SMS\site_$($SiteCode)" -ComputerName $SiteServer | Where-Object { $_.name -like "*$($TS.Name)*"}
}
}
编辑: 问题稍微改变后,这里是新代码:
$SiteCode = "SiteCode"
$SiteServer = "Server"
$TaskSequence = (Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_TaskSequencePackage -ComputerName $SiteServer)
$ImagePackage = (Get-WmiObject -Namespace "root\SMS\site_$($SiteCode)" -Class SMS_ImagePackage -ComputerName $SiteServer)
Foreach($Task in $TaskSequence){
foreach($Image in $ImagePackage){
if($Task.Name -like "*$($Image.Name)*" -or $Image.Name -like "*$($Task.Name)*"){
$Task
#I have no idea what you want to do with this object
}
}
}