Используйте ;
для независимых последовательных операторов.Используйте канал (|
) для подключения вывода одной команды к входу другой.
Вы также можете использовать последовательный доступ к свойствам и методам:
(ls D:\MyFiles\workat.txt).LastWriteTime.ToString('yyy-MM-dd_HH-mm')
Тем не менее, большинство переводов PoSh ваших исходных команд, вероятно, будет выглядеть примерно так:
Get-Item 'D:\MyFiles\workat.txt' |
Copy-Item -Destination { 'D:\MyFiles\workat_{0:yyy-MM-dd_HH-mm}.txt' -f $_.LastWriteTime }
или это:
Get-Item 'D:\MyFiles\workat.txt' |
Copy-Item -Destination { Join-Path $_.DirectoryName ($_.BaseName + $_.LastWriteTime.ToString('_yyy-MM-dd_HH-mm') + $_.Extension }
Get-Item
создает объект FileInfo
из заданногопуть и передает это Copy-Item
по конвейеру.Поскольку Copy-Item
может читать входные данные из конвейера, вам не нужно указывать источник (как он поступает из конвейера), а только пункт назначения.А так как вы читаете из конвейера, вы можете использовать переменную текущего объекта $_
для доступа к свойствам исходного объекта (примечание: вам нужен блок скриптов, то есть фигурные скобки вокруг выражения, чтобы это работало).
В первом примере используется оператор форматирования -f
для вставки даты в строку пути, во втором примере используется командлет Join-Path
и конкатенация строк для построения пути назначения из различных свойств входного объекта.