Может ли PowerShell 1.0 создавать жесткие и программные ссылки, аналогичные разновидностям Unix?
Если это не встроено, может кто-нибудь указать мне на сайт, который имеет скрипт ps1, который имитирует это?
Это необходимая функция любой хорошей оболочки, ИМХО. :)
powershell
symlink
Майк Т
источник
источник
New-Item -Type
и нажмите вкладку, чтобы просмотреть опции.Hardlink
,SymbolicLink
ИJunction
появляются для меня. Работает Win 10, Server 2016+ или более старая ОС с Powershell 5.0+, установленным через Windows Management Framework 5.0+.New-Item -Type HardLink
ниNew-Item -Type SymbolicLink
. Ссылка на документацию с новым элементомhelp about_Providers
предлагает вам прочитать справку для каждого провайдера (который не связан). Но если вы воспользуетесь Google, в сообществе PowerShell будет много шумаNew-Item -Type HardLink
. Похоже, что команда разработчиков PowerShell придумала точки расширения поставщика, которые ставят в тупик команду разработчиков документации.Ответы:
Вы можете позвонить из PowerShell,
mklink
предоставленнойcmd
, чтобы сделать символические ссылки:Вы должны перейти
/d
к,mklink
если целью является каталог.Для жестких ссылок я предлагаю что-то вроде Sysinternals Junction .
источник
function mklink { cmd /c mklink $args }
New-Item
действительно определяет, является ли цель каталогом , ноNew-Item
завершится неудачей, если цель не существует, тогда как mklink создаст символическую ссылку независимо .Windows 10 (и Powershell 5.0 в целом) позволяет создавать символические ссылки с помощью командлета New-Item .
Использование:
Или в вашем профиле:
Включите режим разработчика, чтобы не требовать прав администратора при создании ссылок с
New-Item
:источник
.lnk
ярлык Explorer . В проводнике ярлык и символическая ссылка с тем же именем отображаются рядом, как будто ничего не случилось. Их поведение слегка отличается; следующая символическая ссылка показывает абсолютный путь в панели проводника. После сочетания клавиш он обрабатывается так, как будто родительский каталог символической ссылки является истинным родителем.New-Item
командлетом.Добавить модуль "pscx"
Нет, он не встроен в PowerShell. И
mklink
утилита не может быть вызвана сама по себе в Windows Vista / Windows 7, потому что она встроена непосредственноcmd.exe
как «внутренняя команда» .Вы можете использовать PowerShell Community Extensions (бесплатно). Существует несколько командлетов для точек повторного анализа различных типов:
New-HardLink
,New-SymLink
,New-Junction
,Remove-ReparsePoint
источник
New-Item -Type
и нажмите вкладку, чтобы просмотреть опции.Hardlink
,SymbolicLink
ИJunction
появляются для меня. Работает Win 10, Server 2016+ или более старая ОС с Powershell 5.0, установленным через Windows Management Framework 5.0+.В Windows 7 команда
PowerShell находит его без полного пути (c: \ Windows \ system32) или расширения (.exe).
источник
fsutil hardlink
требуетсяnew-file
иexisting-file
находиться на одном диске. Если это важно для вас, используйтеmklink /c
вместо этого cmd .fsutil
(или Windows в этом отношении)New-Symlink:
Remove-Symlink:
Использование:
источник
New-Item -Type
и нажмите вкладку, чтобы просмотреть опции.Hardlink
,SymbolicLink
ИJunction
появляются для меня. Работает Win 10, Server 2016+ или более старая ОС с Powershell 5.0, установленным через Windows Management Framework 5.0+.Попробуйте junction.exe
Junction утилита командной строки из SysInternals позволяет создавать и легко удалять перекрестки.
дальнейшее чтение
Microsoft использует «soft link» в качестве другого названия для «junction» .
Однако «символическая ссылка» - это нечто совершенно другое.
См. MSDN: Жесткие ссылки и соединения в Windows.
(Это находится в прямом противоречии с общим использованием тех терминов, где «мягкая ссылка» и «символическая ссылка» ( «символическая ссылка» ) действительно означают одно и то же .)
источник
mklink
который поставляется с Windows. Если у вас есть версия Windows, с которой она поставляется.Вы можете использовать эту утилиту:
источник
Я написал модуль PowerShell, который имеет встроенные оболочки для MKLINK. https://gist.github.com/2891103
Включает функции для:
Захватывает вывод MKLINK и выдает правильные ошибки PowerShell при необходимости.
источник
Я объединил два ответа (@bviktor и @jocassid). Он был протестирован на Windows 10 и Windows Server 2012.
источник
На самом деле, команда Sysinternals
junction
работает только с каталогами (не спрашивайте меня почему), поэтому она не может жестко связывать файлы. Я хотел бы пойтиcmd /c mklink
для мягких ссылок (я не могу понять, почему это не поддерживается напрямую PowerShell), илиfsutil
для жестких ссылок.Если вам это нужно для работы в Windows XP, я не знаю ничего, кроме Sysinternals
junction
, так что вы можете ограничиться каталогами.источник
Я нашел это простым способом без посторонней помощи. Да, он использует архаичную команду DOS, но работает, это легко и понятно.
При этом используется команда DOS dir, чтобы найти все записи с атрибутом символьной ссылки, фильтры для конкретного имени ссылки, за которым следуют целевые скобки «[]», и для каждой - предположительно, одной - извлекается только целевая строка.
источник