Я новичок в powershell, и я спросил себя, как я могу поместить следующие переменные в сценарий powershell? Я знаю, как установить переменную в powershell, но я не знаю, как получить "%~dpn0" .

set pgm=%~n0
set log=%~dpn0.log
set csv=%~dpn0.csv
set dir=%~dp0users
set txt=%~n0.txt
set fix=%~dpn0.fix

2 ответа2

2

В пакетном режиме %~dpn0 возвращает диск, путь и имя текущего выполняемого сценария.

Чтобы сделать то же самое в скрипте PowerShell, вы можете использовать $MyInvocation.MyCommand.Definition

например:

$scriptPathAndName = $MyInvocation.MyCommand.Definition
write-host $scriptPathAndName

Чтобы получить только путь к сценарию, вы можете использовать:

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
write-host $scriptPath

(Примечание: в Powershell v3+ вы можете получить путь к скрипту (без имени), ссылаясь на предопределенную переменную $PSScriptRoot)

Чтобы получить только название скрипта:

$scriptName = split-path -leaf $MyInvocation.MyCommand.Definition
write-host $scriptName

Дополнительная информация о параметрах Split-Path: https://technet.microsoft.com/en-us/library/hh849809.aspx

0

Я думаю, что вы ищете что-то вроде этого

$ScriptPath = Split-Path $MyInvocation.MyCommand.Path

Тогда я думаю -Parent даст вам PWD, но вам это может не понадобиться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .