foreach ($Target in $TargetUSBs)
{
$LogPath= @"
$SourceUSB\$(((Get-CimInstance -ClassName Win32_volume)|where {$_.DriveType -eq "2" -and $_.DriveLetter -eq $Target}).SerialNumber)_
$(((Get-CimInstance -ClassName Win32_OperatingSystem).LocalDateTime).Year)$(((Get-CimInstance -ClassName Win32_OperatingSystem).LocalDateTime).Month)
$(((Get-CimInstance -ClassName Win32_OperatingSystem).LocalDateTime).Day)_$(((Get-CimInstance -ClassName Win32_OperatingSystem).LocalDateTime).Hour)
$(((Get-CimInstance -ClassName Win32_OperatingSystem).LocalDateTime).Minute)$(((Get-CimInstance -ClassName Win32_OperatingSystem).LocalDateTime).Second).txt
"@
$LogPath = $LogPath.Replace("`n","").Trim()
New-item -Path "$LogPath"
}
具有讽刺意味的是,当我复制并粘贴变量的内容并手动创建一个新项目路径并粘贴所述内容时,它可以工作,但是当我使用该变量时,它不会......我的目标的简要总结我正在使用 USB标记为 ORIGINAL 并获取当时插入的每个 USB 的 S/N,并为每个文件创建单独的日志文件,标题由 SERIALNUMBER_DATE_TIME.txt 组成,这些文件在 ORIGINAL USB 中创建
$LogPath
包含例如以下内容:E:\Mattel\1949721369_2018912_93427.txt
然而,当我在新项目中使用变量时,它表明"Illegal characters in Path"
仅供参考$LogPath
,System.String
不是一个对象
$TargetUSBs
,其中填充了插入系统的所有 USB 驱动器
这种将变量用于路径的方法通常对我来说很好,唯一的区别是我这次使用的here-string这会导致我的问题吗?我希望不是因为我真的不想在一行上填充那个变量。New-Item's
helpfiles 显示<String[]>
参数-path
是否意味着我必须使用字符串数组?如果是这样,我该如何转换它以使其工作?