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"
}
Ирония заключается в том, что я копирую и вставляю содержимое своей переменной и вручную создаю новый путь -path и вставляю содержимое, которое работает, но когда я использую переменную, это не так ...
Краткое описание моей цели Я беру USB с маркировкой ORIGINAL и получаю S / N каждого USB, подключенного в то время, и создаю отдельные файлы журнала для каждого с заголовком, состоящим из SERIALNUMBER_DATE_TIME.txt, и эти файлы создаются в ORIGINAL USB
$LogPath
содержит, например, следующее: E:\Mattel\1949721369_2018912_93427.txt
Тем не менее, когда я использую переменную в New-item, это означает "Illegal characters in Path"
FYI $LogPath
является System.String
не объектом
$TargetUSBs
заполнен всеми USB-накопителями, подключенными к системе
этот метод использования переменной для пути, как правило, работает для меня нормально, только разница в том, какая строка здесь я использовал в этот раз, вызывает ли это мою проблему? Я надеюсь, что нет, потому что я действительно не хочу заполнять эту переменную одной строкой. New-Item's
helpfiles показывает <String[]>
для параметра -path
означает ли это, что я должен использовать строковый массив? и если да, то как мне преобразовать это, чтобы это работало?