添加到Powershell

时间:2018-04-26 10:27:42

标签: powershell

我是PowerShell的新手,并希望为POC测试一些东西。 云存储箱中存储了多个文件(File_1.txt,File_2.txt等)。

我想使用通配符将这些文件添加到数组中,然后为每个文件运行一些命令(特定于云)。

我无法在代码中指定-Path,因为文件位于云端,而我没有路径。

以下代码有效:

 $files = @("File_1.txt","File_2.txt","File_3.txt")
 foreach ($file in $files) {
   Run commands on cloud like...delete inbox/$file
 }

但是我不能硬编码文件名。我希望使用通配符添加文件名。

  $files=@("File*.txt")
   foreach ($file in $files) {
     Run commands on cloud like...inbox/$file
   }

但这不起作用,因为它将File * .txt作为文件的名称。

提前致谢

2 个答案:

答案 0 :(得分:0)

您应该使用TraderService等效的PowerShell,dir(事实上Get-ChildItemdir是Cmdlet的别名)来使用通配符搜索文件:

ls

$files = Get-ChildItem file*.txt foreach($file in $files) { DoSomeStuffWithFile $file } 返回Get-ChildItem个对象。如果要在循环中使用文件名FileInfo,则应引用对象的String属性:

Name

答案 1 :(得分:-1)

您可以使用字符串插值轻松更新文件编号。以下是这可能如何工作的基本示例:

1 .. 10 | 
    ForEach-Object {
        "hello" | Out-File -Path "File_$_.txt"
    }

这里我们生成一个从1到10的数字数组(使用范围运算符..),然后将其传送到我们的命令(因此放在$_变量中)。当每个数字通过时,路径使用当前值$_构建,因此您获得File_1.txtFile_2.txt等。

您可以使用其他循环技术,但关键是您可以通过让PowerShell为您替换变量来即时构建文件名/路径。