mkdir против New-Item, это те же командлеты? - PullRequest
0 голосов
/ 13 июня 2018

Я обнаружил, что есть два разных командлета: New-Item и mkdir, сначала я подумал, что mkdir - это один из псевдонимов New-Item, но это не так: enter image description here

Попробуйте получить псевдонимы этого, это md для mkdir и ni для New-Item:

Так что янемного смущен, какая разница между этими командлетами, потому что ссылка на powershell дает мне почти те же страницы: mkdir, New-Item Но New-Item находится в Microsoft.PowerShell.Managementи mkdir в Microsoft.PowerShell.Core, но делать то же самое (или нет?)!Почему в powershell есть два одинаковых командлета?

1 Ответ

0 голосов
/ 13 июня 2018

New-Item - это командлет, определенный в сборке, который создает новые объекты - как файлы, так и каталоги.mkdir - это функция, которая вызывает New-Item для создания каталогов.Он предназначен для удобства пользователей оболочки, знакомых с Windows CMD или командой оболочки unix mkdir

Чтобы увидеть определение mkdir, используйте Get-Content Function:\mkdir.Вы можете видеть, что он вызывает New-Item под прикрытием после некоторого управления параметрами и конвейерами.Использование PS 5.0:

$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('New-Item', [System.Management.Automation.CommandTypes]::Cmdlet)
$scriptCmd = {& $wrappedCmd -Type Directory @PSBoundParameters }

Обе из следующих команд создадут новый каталог с именем foo в корне C:\.Вторая форма знакома людям, приходящим из других оболочек (и короче типу).Первая форма - идиоматическая PowerShell.

PS> New-Item -Path C:\foo -Type Directory
PS> mkdir C:\foo

Поскольку mkdir жестко кодирует параметр -Type Directory, его можно использовать только для создания каталогов.Эквивалентной mkfile встроенной функции не существует.Для создания файлов используйте New-Item -Type File или другой командлет, например Out-File.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...