【发布时间】:2018-11-01 02:54:25
【问题描述】:
我正在尝试创建一个小型 Powershell 脚本,它将匹配特定条件的文件列表复制到指定的 GCP 存储桶。我已经走到这一步了:
Get-ChildItem $Path | Where-Object { $_.psiscontainer -and $_.LastWriteTime -gt $Age } | Select-Object -ExpandProperty FullName | ft -hidetableheaders | gsutil -m cp -L log.log -r -n -I gs://bucket
但这只会上传列表中第一个文件夹的内容。我尝试在 gsutil 命令上使用 foreach-object,但由于找不到要上传的 URL,我收到错误消息。将 foreach 的输出写入控制台时,输出似乎完全为空。
我已经确认整行减去 gsutil 命令会从路径返回正确的文件夹,所以我知道数据正在进入管道。但我不确定为什么 gsutil 只考虑管道中的第一项。
任何帮助将不胜感激,并提前感谢您!
【问题讨论】:
-
... | ft -hidetableheaders | gsutil ...->... | gsutil ... -
请勿使用
Format-*cmdlet,除非您特别需要向用户显示格式化输出。 -
谢谢! gsutil 仍然没有上传我想要的所有内容,但至少脚本现在更干净了:)
-
如果它仍然只复制第一个目录,则参数
-I可能无法正常工作。请改用... | ForEach-Object { gsutil -m cp -n -r $_ gs://... }。 -
谢谢!那工作得很好。很遗憾他们提出的论点没有按预期工作,但我们走了:)
标签: powershell google-cloud-platform