powershell получить местоположение файла от пользователя
Привет я пытаюсь автоматизировать что-то для целей тестирования. У меня есть файл sample.xml, который мне нужно перенести в какую-то папку, что делается пользователем вручную. поэтому я пытаюсь автоматизировать это с помощью PowerShell.
Расположение файла должно быть выбрано пользователем, и я хочу сделать
Copy-Item -Path $fileLocation -Destination $dest
я написал этот фрагмент кода, я попытался жестко запрограммировать корневой путь и захватить местоположение файла самостоятельно через фильтр, я могу видеть, что путь напечатан правильно, но он не принимается Copy-Item . это бросает путь, является нулем.
Вот кусок кода, который я написал
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false)][string]$path
)
[string]$path = get-childitem -path "C:\Program Files (x86)\Demo\Sample" -Filter POsample01.xml -recurse | % {Write-Host $_.FullName}
Write-Host $path
Copy-Item -Path $path -Destination "D:\powershell"
хозяин записи печатает фактическое местоположение файла образца!
1 ответ
Зачем пользователю делать это вручную?
Если PoSH Remoting настроен, и вы являетесь администратором, вы можете перемещаться по файловой системе удаленно, а затем вы можете копировать / перемещать файл удаленно.
Invoke-Command -ComputerName 'SomeTaregHostname' -ScriptBlock {
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$false)][string]$path
)
[string]$path = get-childitem -path "C:\Program Files (x86)\Demo\Sample" -Filter POsample01.xml -recurse | % {$_.FullName}
$path
Copy-Item -Path $path -Destination "D:\powershell"
}
Вы также не должны использовать Write-Host только для вывода на экран, так как это на самом деле не нужно. Ну, если вы не используете его для отображения цветного текста. По умолчанию выводится на экран.
Если вам нужно отправить вещи по конвейеру, то Write-Host очищает буфер, и вам нечего отправлять. Итак, запомни это...
Если должен использоваться конвейер (передача информации / объектов чему-то другому) - никогда не используйте Write-Host.
Если вы делаете это по-настоящему автоматизированным способом, такого рода вещи невидимы для пользователя.
Write-Host считается вредным - основатель PowerShell Джеффри Сновер
Start-Process ' http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful'
Когда вы пишете или просматриваете сценарии PowerShell, я бы хотел, чтобы вы запомнили следующее правило:
Write Использование Write-Host почти всегда неправильно.
Write-Host - почти всегда неправильная вещь, потому что это мешает автоматизации. Обычно есть две причины, по которым люди используют Write-Host:
Есть много других статей на эту тему. В более ранних версиях PoSH Write-Host нельзя было использовать в конвейере, так как в тот момент, когда вы его используете, данные удаляются из буфера.
Однако в PoSHv5 Джеффри Сновер теперь говорит...
С PowerShell v5 Write-Host больше не "убивает щенков". данные вводятся в информационный поток
Процесс запуска " https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Write-Information?view=powershell-5.1"
Описание
Командлет Write-Information указывает, как Windows PowerShell обрабатывает данные информационного потока для команды.
Windows PowerShell 5.0 представляет новый структурированный поток информации (номер 6 в потоках Windows PowerShell), который можно использовать для передачи структурированных данных между сценарием и его вызывающими (или средой размещения). Write-Information позволяет добавить информационное сообщение в поток и указать, как Windows PowerShell обрабатывает данные информационного потока для команды.