如何在 Powershell 数组中搜索特定字符串并在复制项目 -include 脚本中使用此结果
How to search Powershell array for specific strings and use this result in a copy-item -include script
我正在尝试在 Powershell 中创建一个同步脚本,以便根据文件夹名称(在 MDT 中,应用程序位于一个文件夹中,我们的主服务器根据使用它们的部门划分了应用程序)。
根据我在网上阅读的内容,最好的方法是用 "Get-ChildItem" 填充一个数组,我有点想出了如何去做(见下面的代码)。
尽管填充数组后,我不知道如何在该数组中搜索特定结果,也不知道如何将这些结果与复制项一起使用。
简而言之,我需要做的是:使用 "Get-ChildItem" 构建一个数组,查询生成的数组中的特定文件夹,并将这些文件夹复制到特定的目的地。
这是我目前的代码:
$arr = Get-ChildItem \slmtl-wds02.domain.inc\deploymentshare$\applications |
Where-Object {$_.PSIsContainer} |
Foreach-Object {$_.Name}
$sourcepath = \slmtl-wds02.domain.inc\deploymentshare$\applications
$destSLARC = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLARCMTL
$destSLMTL = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLMTL
$destSLGLB = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLGLB
$destSLTECH = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLTECH
在此先感谢您的帮助:)
希望这能成功将路径 D:\ 更改为您想要的路径输入您要查找的文件夹的名称
$Keyword=[Microsoft.VisualBasic.Interaction]::InputBox("Enter your Query")
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
Get-ChildItem D:\ -recurse | Where-Object {$_.PSIsContainer -eq $fasle -and $_.Name -match "$keyword"} | Copy-Item -Destination d:\test
$sourceLocation = "c:\analysis\"
$targetLocation = "c:\analysisCopy\"
$included = @("folder1", "folder2")
$result = @()
foreach ($i in $included){
$result += get-ChildItem $sourceLocation -filter $i | Where-Object {$_.PSIsContainer}
}
$result | foreach-Object { copy-item $_.FullName -Destination $targetLocation -Recurse}
我正在尝试在 Powershell 中创建一个同步脚本,以便根据文件夹名称(在 MDT 中,应用程序位于一个文件夹中,我们的主服务器根据使用它们的部门划分了应用程序)。
根据我在网上阅读的内容,最好的方法是用 "Get-ChildItem" 填充一个数组,我有点想出了如何去做(见下面的代码)。
尽管填充数组后,我不知道如何在该数组中搜索特定结果,也不知道如何将这些结果与复制项一起使用。
简而言之,我需要做的是:使用 "Get-ChildItem" 构建一个数组,查询生成的数组中的特定文件夹,并将这些文件夹复制到特定的目的地。
这是我目前的代码:
$arr = Get-ChildItem \slmtl-wds02.domain.inc\deploymentshare$\applications |
Where-Object {$_.PSIsContainer} |
Foreach-Object {$_.Name}
$sourcepath = \slmtl-wds02.domain.inc\deploymentshare$\applications
$destSLARC = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLARCMTL
$destSLMTL = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLMTL
$destSLGLB = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLGLB
$destSLTECH = \slmtl-fs01.domain.inc\folder\it_services\private\software\service_desk\pc\SLTECH
在此先感谢您的帮助:)
希望这能成功将路径 D:\ 更改为您想要的路径输入您要查找的文件夹的名称
$Keyword=[Microsoft.VisualBasic.Interaction]::InputBox("Enter your Query")
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
Get-ChildItem D:\ -recurse | Where-Object {$_.PSIsContainer -eq $fasle -and $_.Name -match "$keyword"} | Copy-Item -Destination d:\test
$sourceLocation = "c:\analysis\"
$targetLocation = "c:\analysisCopy\"
$included = @("folder1", "folder2")
$result = @()
foreach ($i in $included){
$result += get-ChildItem $sourceLocation -filter $i | Where-Object {$_.PSIsContainer}
}
$result | foreach-Object { copy-item $_.FullName -Destination $targetLocation -Recurse}