gpt4 book ai didi

powershell - Get-ChildItem 使用变量 -Include 不工作

转载 作者:行者123 更新时间:2023-12-04 01:39:46 24 4
gpt4 key购买 nike

问题的当前版本:

我初始化一个数组 $tbd_list 如下:

$tbd_list = @()
foreach($i in $tbd) {
# -- If statement prevents duplicate id's
if(!($tbd_list -match $i.id)){
$tbd_list += $i.id
}
}

在这一点上,如果我打印 $tbd_list 我得到:
"dce50fdd-2298-45db-8aac-fb13a176fe1a*.*"
"79c1538f-09b1-4ed7-b84c-ff1a7934596a*.*"
"60511686-7a87-4352-a781-62e7c04913e5*.*"
"0821f8ee-c1ca-4568-ab68-bb5e30d07268*.*"
"3b9f5da0-fc2d-49e3-a11d-943f5ac2296a*.*"
"ff7720fd-2c0f-43c8-871a-e283f231c823*.*"

($tbd_list.GetType().FullName 返回 System.Object)

然后我尝试运行以下代码:
Get-ChildItem F:\store_test\ -Recurse -Include $tbd_list

但是,我什么也得不到。

但是,如果我手动输入:
$tbd_list = "dce50fdd-2298-45db-8aac-fb13a176fe1a*.*", "79c1538f-09b1-4ed7-b84c-ff1a7934596a*.*", "60511686-7a87-4352-a781-62e7c04913e5*.*", "0821f8ee-c1ca-4568-ab68-bb5e30d07268*.*", "3b9f5da0-fc2d-49e3-a11d-943f5ac2296a*.*", "ff7720fd-2c0f-43c8-871a-e283f231c823*.*"

此时,如果我打印 $tbd_list 我仍然得到:
"dce50fdd-2298-45db-8aac-fb13a176fe1a*.*"
"79c1538f-09b1-4ed7-b84c-ff1a7934596a*.*"
"60511686-7a87-4352-a781-62e7c04913e5*.*"
"0821f8ee-c1ca-4568-ab68-bb5e30d07268*.*"
"3b9f5da0-fc2d-49e3-a11d-943f5ac2296a*.*"
"ff7720fd-2c0f-43c8-871a-e283f231c823*.*"

并运行同一行($tbd_list.GetType().FullName 仍然返回 System.Object):
Get-ChildItem F:\store_test\ -Recurse -Include $tbd_list

它完美地工作。有什么建议?

解决方案

下面两个答案都是正确的,但我只能选择一个。

在确保变量是一个数组之后,我不得不删除前导和尾随引号,脚本就可以工作了。谢谢!

最佳答案

$tbd_list.GetType().FullName gives System.String



虽然从您的问题中不清楚您如何定义 $tbd_list,但它应该是一个数组,并且只有当它是一个数组时,它才能与 Get-ChildItemInclude 选项一起使用。如果它是一个字符串,它就不会以您期望的方式工作。正确定义它:
$tbd_list = "dce50fdd-2298-45db-8aac-fb13a176fe1a*.", "79c1538f-09b1-4ed7-b84c-ff1a7934596a.*", "dce50fdd-2298-45db-8aac-fb13a176fe1a*.", "79c1538f-09b1-4ed7-b84c-ff1a7934596a.*", "dce50fdd-2298-45db-8aac-fb13a176fe1a*.", "60511686-7a87-4352-a781-62e7c04913e5.*", "0821f8ee-c1ca-4568-ab68-bb5e30d07268*.", "3b9f5da0-fc2d-49e3-a11d-943f5ac2296a.*", "ff7720fd-2c0f-43c8-871a-e283f231c823*.*"

使用上面的行对我有用 Get-ChildItem
更新:

这是你做错的地方:
$tbd_list = "$tbd_list, " + $i.id

它将构造一个字符串。

您必须将 $tbd_list 初始化为数组:
$tbd_list = @()

并添加您想要的项目:
$tbd_list += $i.id

关于powershell - Get-ChildItem 使用变量 -Include 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com