Powershell Foreach循环错误地将文件添加到父文件夹

Powershell Foreach循环错误地将文件添加到父文件夹,powershell,Powershell,下面的脚本创建一个IP地址名的文件夹,并向其中添加3个文件。但它还在父日志文件夹中添加了3个文件 日志\10.2.2.1\3文件应该在这里,它们确实在这里,但这3个文件也显示在\Logs文件夹中 $date = (Get-Date).AddDays(-1) $str_yesterday = '20190902' $exe = "D:\task-scripts\7z.exe" foreach ($IP in Get-Content D:\serverlist\list.txt) {

下面的脚本创建一个IP地址名的文件夹,并向其中添加3个文件。但它还在父日志文件夹中添加了3个文件

日志\10.2.2.1\3文件应该在这里,它们确实在这里,但这3个文件也显示在\Logs文件夹中

$date = (Get-Date).AddDays(-1)

$str_yesterday = '20190902'

$exe = "D:\task-scripts\7z.exe"

foreach ($IP in Get-Content D:\serverlist\list.txt) {
    New-Item -ItemType Directory -Force -Path D:\LOG\$str_yesterday\$IP
    $file = New-Item -ItemType file "D:\LOG\$str_yesterday\$IP\$str_yesterday-log.txt" -Force
    $date_MSG = &$exe a -r D:\LOG\$str_yesterday\$IP\MSG_$str_yesterday.zip \\$IP\$str_yesterday
    $data_Server = &$exe a -r D:\LOG\$str_yesterday\$IP\Server_$str_yesterday.zip \\$IP\$str_yesterday
}

在文件中:
D:\serverlist\list.txt

文件末尾是否有换行符(空行)?i、 e.当您执行
foreach
循环时,一个空行将
$IP
设置为空白,这将更改路径为:

"D:\LOG\$str_yesterday\\$str_yesterday-log.txt"

PowerShell将忽略第二个斜杠,并将文件放在根文件夹中。

在文件中:
D:\serverlist\list.txt

文件末尾是否有换行符(空行)?i、 e.当您执行
foreach
循环时,一个空行将
$IP
设置为空白,这将更改路径为:

"D:\LOG\$str_yesterday\\$str_yesterday-log.txt"

PowerShell将忽略第二个斜杠,并将文件放在根文件夹中。

此外,您可以使用
foreach($IP In(获取内容D:\serverlist\list.txt | Where Object{$\匹配'\S'))跳过空行或仅空白行){
是的,有一个空格。愚蠢的错误。非常感谢!。还有ty Theo,我添加了这段代码以防止将来出现错误。此外,您可以使用
foreach($IP In(获取内容D:\serverlist\list.txt | Where Object{$\u-match'\S})跳过空行或仅空格行){
是的,有一个空格。愚蠢的错误。非常感谢!还有泰西奥,我已经添加了一些代码来防止将来的错误。