Как запустить powershell в определенной папке
Создал ярлык powershell консоли в Windows 10, хочу чтобы она запускалась от администратора и в определенной папке. Подскажите как сделать? Я пробовал параметр запуска указывать, не работает:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -commnad 'cd F:\'

Также не работает рабочая папка в свойствах ярлыка:
Отслеживать
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
задан 9 мар 2018 в 4:52
spectre_it spectre_it
3,299 4 4 золотых знака 29 29 серебряных знаков 53 53 бронзовых знака
уважаемые! у вас хорошие ответы, но они не подходят, я спрашиваю как мне запускать ярлык и попадать в папку с проектом. Т.е. я хочу щелкнуть по ярлыку и чтобы powershell открылся в нужно папке.
9 мар 2018 в 7:19
-noexit -command «cd F:\\»
9 мар 2018 в 8:11
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
В проводнике Windows перейдите в адресную строку (Alt + D или Ctrl + L). Введите powershell или powershell_ise и нажмите Enter.
Отслеживать
ответ дан 9 мар 2018 в 7:16
Oleksii Petrushynskyi Oleksii Petrushynskyi
151 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков
Используйте PowerShell Profiles:
Находясь в Powershell дайте команду на создание профиля:
New-Item -ItemType file -Path $profile -Force
Откройте профиль на редактирование:
Ise $profile
Впишите в открывшемся редакторе команду перехода в нужный каталог:
cd F:\
Закройте консоль Powershell и попробуйте открыть снова. Вуаля — вы в папке f:\ !
PS Статьи в помощь:
- Профили в PowerShell
- All About PowerShell Profiles
Отслеживать
ответ дан 9 мар 2018 в 9:23
28.6k 21 21 золотой знак 59 59 серебряных знаков 141 141 бронзовый знак
Заходите в папку, зажимаете клавишу shift + правую кнопку мыши и затем в контекстном меню нажимаете Открыть окно команд (или, наверное будет по другому написано — Открыть Powershell ).
Отслеживать
ответ дан 9 мар 2018 в 7:15
Данил Чугаев Данил Чугаев
973 7 7 серебряных знаков 14 14 бронзовых знаков
Для powershell Core
pwsh.exe -wd «c:\your_directory»
Команда для реестра или при непосредственном запуске powershell
powershell -NoExit -command
Команда для «cmd подобных» ярлыки, запуск через bat файлы и другие варианты
powershell -NoExit -Command «& »
или
powershell -NoExit -Command «& Set-Location -Path \»c:\\your_directory\»»
или
powershell -NoExit -Command Set-Location -Path «c:\your_directory»
Для ярлыка конкретно
«absolute_path\powershell.exe» -NoExit -Command «& «
Запуск от имени администратора, правая клавиша мыши — Запуск от имени администратора. Если хотите чтобы ярлык запускал сразу как от имени администратора, то свойства ярлыка=>дополнительно=>запуск от имени администратора или копайте в сторону команды runas и объединяйте команды.
Как подключить сетевую папку в Powershell c New-PSDrive или New-SMBMapping
В Powershell реализована возможность подключать сетевые диски используя протоколы SMB/CIFS. Эта возможность использует разные команды работа с которыми может вызвать сложности. Рассмотрим применение команд на примерах.
Навигация по посту
- Как работают в Powershell сетевые диски
- Получение списка сетевых дисков и их удаление
- Подключение сетевых дисков
- New-SmbMapping
- New-PSDrive
Как работают в Powershell сетевые диски
В Powershell по умолчанию существует возможность обратиться по сетевому пути не используя сетевые диски. Например это можно сделать через команду ‘Get-ChildItem’:
Get-ChildItem -Path '\\localhost\c$'Такой способ ограничен пользователем, который открыл консоль или запустил скрипт. Если вы запустите консоль от имени доменного администратора — то обращение к сетевому пути будет от его имени.
Возможность использовать другие учетные записи, а так же подключать сетевые диски, реализованы в 2 командах:
- New-SmbMapping — команда появилась в версии Powershell 5. Относится к модулю SmbShare, то есть создана специально для работы с SMB;
- New-PSDrive — работает с версии Powershell 3. Все командлеты типа ‘PSDrive’ относятся ко всем дискам.
Обе команды, аналогично Get-ChildItem, подключают диски под учетной записью, которая запустила консоль.
Хоть эти команды достаточно старые, в каждой из новых версий Powershell находятся ошибки и баги. На момент написания статьи баги были найдены в версиях 5.1 — 7.1 и все они касались процесса подключения.
Основной момент, который упростит работу с сетевыми папками в Powershell кроется в понимании понятии провайдеров. Создавая сетевой диск обычными средствами Windows вы сразу видите результат в проводнике. Делая то же самое в Powershell вы изначально обращаетесь к провайдеру услуг, а он обращается к Windows. В зависимости от указанных вами параметров и возможностью команды у вас может быть создан диск только в рамках этого провайдера либо в рамках провайдера и области Windows.
Если это сложно понять, то представьте, что среда Windows и Powershell это разные вещи и что бы скопировать файл с одного места на другое — нужно использовать дополнительный параметр, которого может и не быть.
Получение списка сетевых дисков и их удаление
Мы можем получить список сетевых дисков используя обе команды модуля:
Get-PSDrive Get-SmbMapping
Отличия, которые видны на первый взгляд в том, что во втором случае мы возвращаем список дисков подключение к которым не восстановилось. Кроме этого ‘Get-SmbMapping’ хранит больше информации о дисках, если вывести их все:
Get-PSDrive -Name 'G' | select * Get-SmbMapping -LocalPath 'G:' | select *
Мы можем вывести учетную запись, под которой подключена сетевая папка, следующим образом:
(Get-PSDrive -Name 'G').CredentialКоманды удаления отличаются только наличием параметра ‘UpdateProfile’. Если он присутствует в команде ‘Remove-SMBMapping’, то диск не будет восстанавливать соединение после перезагрузки компьютера. В случае с Remove-PSDrive это предусмотрено автоматически:
Remove-SmbMapping -LocalPath 'G:' -UpdateProfile -Force Remove-PSDrive -Name 'J' -ForceForce удаляет подключение без подтверждения.
Подключение сетевых дисков
Проблемы с командами могут зависеть от версии вашего интерпретатора. Powershell 5-ой версии был предустановлен во всех версиях начиная с Windows 10 и Windows Server 2016. Если вы сомневаетесь в версии, то это можно проверить следующей командой:
$PSVersionTable # или host
New-SmbMapping
Самый простой способ подключить диски, используя команду New-SmbMapping, будет выглядеть следующим способом:
New-SmbMapping -LocalPath 'J:' -RemotePath '\\192.168.2.200\SharedFolder' -Persistent $true
В этой команде используются следующие ключи:
- LocalPath — локальный путь или буква, под которой будет подключен диск;
- RemotePath — путь к папке через IP или DNS. В случае выше подразумевается, что у пользователя, который открыл консоль Powershell, есть права для подключения к этому пути. Важно так же обратить внимание на кавычки, если ваш путь содержит специальные символы;
- Persistent — дословно переводится как ‘постоянный’, но в случае сетевых папок обозначает восстановление соединения после отключения сети/компьютера.
Пример выше специально демонстрирует проводник так как это одна из проблем этой команды в версии 5.1 — диск начнет отображаться в проводнике только после перезагрузки компьютера или перезапуске процесса ‘explorer.exe’.
Мы можем перезапустить процесс средствами Powershell. Выполнение этой команды, как минимум, закроет все открытые окна:
Stop-Process -Name 'explorer' | Start-Process -FilePath 'C:\Windows\explorer.exe'
Так же у вас могут появиться другие ошибки, например следующие говорят об уже занятой букве:
- New-SmbMapping : Имя локального устройства уже используется.
- New-SmbMapping : The local device name is already in use.
Следующая ошибка произойдет, если вы указали слэш ‘\’ в конце пути или к нему нет доступа на уровне сети (фаерволла, dns, политик и т.д.):
- New-SmbMapping : The network name cannot be found.
New-PSDrive
В отличие от предыдущего способа — у него нет проблем с проводником, но после перезагрузки компьютера подключение к диску пропадет. Как я прочитал в каких-то версиях Powershell это исправлено, в каких-то появились новые проблем. Один из способов сделать диск постоянным — будет рассмотрен ниже.
Подключить аналогичный диск можно следующим способом:
New-PSDrive -Name 'G' -PSProvider 'FileSystem' -Root '\\192.168.2.200\SharedFolder' -Persist -Scope 'Global'
- Name — путь, буква или любой другой идентификатор определяющий диск. Чаще всего это просто буква;
- PSProvider — поставщик услуг. Всех поставщиков услуг можно увидеть через ‘Get-PSProvider’. В большинстве случаев поставщиком услуг для сетевых дисков будет ‘FileSystem’. В теории вы можете использовать поставщика «Registry» что бы в рамках сессии Powershell легче обращаться к какому-то пути. Поставщик услуг или ‘PSProvider’ — это условная программа, которая будет обрабатывать вашу команду между Powershell и Windows;
- Root — путь до удаленной папки. Если бы в ‘PSProvider’ стоял ‘Registry’, то тут можно было указать путь следующего формата: ‘HKLM:\Software\Microsoft’;
- Persist — должно ли восстанавливаться подключение при потере связи;
- Scope — область действия диска. В этом случае не должно играть значение, но на форумах советуют использовать значение ‘Global’, если не получается подключать диск. Если бы вы использовали сетевой диск только для одно сессии Powershell — вы могли бы ограничить область видимости диска.
У вас могут появиться следующие ошибки:
- New-PSDrive : The network resource type is not correct;
- The specified network resource or device is no longer available.
Один из способов решения — убрать слэш в конце пути. Так же попробуйте открыть полный путь в проводнике так как ошибка может указывать на недоступность папки. Так же можете попробовать убрать параметр ‘Persist’, т.к. после этого ошибка может изменится и принять более понятный характер.
Рабочий способ сделать этот диск постоянным — отредактировать его через реестр. Ветка, под которой был подключен диск, будет иметь следующий путь »HKCU:\Network\G». «G» в конце — это буква под который был подключен диск. Мы можем вернуть существующие значения следующей командой:
Get-ItemProperty -Path 'HKCU:\Network\G'
Вам нужно обратить внимание на выделенные фрагменты. ‘DeferFlags’, в значении 4, обозначает, что диск подключается под логином и паролем аутентифицированного пользователя. 1-ца говорит об обратном и, возможно, что пароль не указан. На одном из форумов писали, что это поле должно указывать на цифру 4 что бы команда успешно работала. Я наблюдал случаи с 1 и 4, но проблем не замечал.
Моя проблема была решена после указания 1 в поле ‘ConnectionType’. Значение 1 говорит, что будет выполняться перенаправление дисков. Установить это значение через Powershell можно так:
Set-ItemProperty -Path 'HKCU:\Network\G' -Name 'ConnectionType' -Value 1
Подключение дисков под другим пользователем
Обе команды позволяют выполнять подключение используя других пользователей. Для каждой из команд этот подход отличается.
В случае команды ‘New-PSDrive’ вам нужно будет выполнить ‘Get-Credential’ и поместить в него учетные данные. Традиционный способ поместить эти данные в переменную:
$сred = Get-Credential
Эта переменная будет хранить ссылку на объект в памяти, который нельзя будет экспортировать на другой компьютер. Как упростить процесс, если вы планируете использовать учетные данные на разных компьютерах, рассмотрено в другой статье.
После этого мы передаем переменную в параметр ‘-Credential’:
New-PSDrive -Credential $cred -Name 'G' -PSProvider 'FileSystem' -Root '\\192.168.2.200\SharedFolder' -Persist -Scope 'Global'
В случае с ‘New-SMBMapping’ эта операция выполняется проще. У вас есть 3 параметра, которые нужно заполнить:
- UserName — логин;
- Password — пароль;
- SaveCredential — нужно ли сохранять учетные данные.
Пример подключения с сохранением учетных данных:
$password = '123' $username = 'admin@domain.local' New-SmbMapping -Username $username -Password $password ` -LocalPath 'J:' -RemotePath '\\192.168.2.200\SharedFolder' ` -Persistent $true -SaveCredentials
Проблема, которую не получилось решить на разных версиях Powershell, связана с параметром ‘-SaveCredentials’. Его указание приводит к ошибке » New-SmbMapping : The parameter is incorrect. «. Его отсутствие — не сохраняет введенные учетные данные и после перезагрузки связь с диском может пропасть если не добавить соответствующую запись в ‘Credential Manager’.
Подключение дисков удаленно
Каждая из команд может выполняется удаленно. У команды ‘New-SMBMapping’ для этого есть встроенный параметр ‘CimSession’. В случае обоих подходов можно использовать команды из модуля PSRemoting, например ‘Invoke-Command’. Нужно отметить, что сетевые папки в Powershell всегда подключаются под тем пользователем, под которым была запущена консоль или скрипт. Если вы были аутентифицированы под пользователем ‘alex’ и открыли консоль Powershell, то диски будут подключены пользователю ‘alex’. Кроме этого, для каждой команды у вас должен быть запущен WinRM и установлены настройки в TrustedHost.
Пример команды, которая подключит диск у пользователя:
# Вводим логин и пароль пользователя # который имеет право подключаться к удаленному компьютеру $cred = Get-Credential # Устанавливаем сессию с удаленным компьютером $session = New-CimSession -Credential $cred -ComputerName 192.168.2.111 # Через созданную сессию подключаем сетевой диск New-SmbMapping -LocalPath S: -RemotePath "\\192.168.2.200\admin2" -CimSession $sessionДля обеих команд подойдет следующий способ:
# Вводим логин и пароль пользователя # который имеет право подключаться к удаленному компьютеру $cred = Get-Credential # Используем учетные данные для выполнения команды Invoke-Command -ComputerName '192.168.2.111' -Credential $cred -ScriptBlock
Управление дисками и разделами из PowerShell

10.01.2019

itpro

PowerShell, Windows 10, Windows Server 2016

Комментариев пока нет
В этой статье мы рассмотрим процесс управления дисками, разделами и томами из командной строки PowerShell. Все операции по работе с локальными дисками и разделами, которые вы привыкли выполнять с помощью графической консоли «Управление дисками» (diskmgmt.msc) или из командной строки утилиты diskpart.exe, вы можете выполнить из PowerShell. Командлеты управления дисками включены в модуль Storage, доступный в PowerShell 3.0. Мы посмотрим как инициализировать диск, создать на нем таблицу разделов, раздел и отформатировать его. Рассмотренные ниже команды будут работать в Windows 10 / Server 2016 и Windows 8.1/ Server 2012 R2 (в предыдущих версиях Windows придется сначала обновить PowerShell).
В Windows 10 в модуле Storage доступно 160 команд. Чтобы вывести все доступные команды управления дисками, выполните:
Get-Command -Module Storage

Важно. При работе с дисками и разделами на них из PowerShell нужно быть внимательным, чтобы случайно не удалить или отформатировать раздел с данными.
Вывод списка дисков и разделов на них
Прежде всего попробуйте вывести список дисков, доступных на логическом уровне в вашей системе. Для этого выполните команду:
Get-Disk | ft -AutoSize
Чтобы выбрать только системный диск, на котором установлена Windows, выполните команду:
Get-Disk | Where-Object IsSystem -eq $True | fl
Как вы видите, команда вернула следующие атрибуты системного диска (их также можно использовать в выборке):
UniqueId : SCSI\DISK&VEN_VMWARE&PROD_VIRTUAL_DISK\5&1EC51BF7&0&000000:DESKTOP-JOPF9
Number : 0
Path : \\?\scsi#disk&ven_vmware&prod_virtual_disk#5&1ec51bf7&0&000000#Manufacturer : VMware
Model : Virtual disk
SerialNumber :
Size : 80 GB
AllocatedSize : 85898297344
LogicalSectorSize : 512
PhysicalSectorSize : 512
NumberOfPartitions : 2
PartitionStyle : MBR
IsReadOnly : False
IsSystem : True
IsBoot : TrueМожно вывести только диски со статусом Offline:
Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize

Если вам нужна информация о физических дисках (характеристики и состояние физических дисков на компьютере), используйте командлет Get-PhysicalDisk (ранее мы показывали как с помощью командлета Get-PhysicalDisk можно определить неисправный диск в Storage Spaces Direct и его использование при настройке отказоустойчивого хранилища S2D).

С помощью PowerShell вы можете определить тип подключенного накопителя SSD или HDD (обычно подключен через шину SATA) или USB флешка (тип UnSpecified).
0 TOSHIBA MK3775VSXP HDD SATA 500156374016
1 Samsung SSD 840 PRO Series SSD SATA 128060514304
Вы можете вывести список разделов на всех дисках:
Либо разделы только на указанных дисках:
Get-Partition –DiskNumber 1,2
Чтобы вывести список всех логических разделов в Windows выполните:

Обратите внимание, что нумерация дисков начинается с 0, а нумерация разделов с 1.
Инициализация диска
В предыдущем примере вы видели, что один из дисков находится в офлайн состоянии и имеет разметку RAW в поле Partition Style. Попробуем инициализировать его, создать таблицу разделов и создать на нем новый раздел.
Прежде всего нужно перевести такой диск в онлайн:
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
Теперь можно инициализировать этот диск (его индекс 1):
Initialize-Disk -Number 1

По умолчанию на диске создается таблица разделов GPT (GUID), если вам нужна именно MBR, выполните команду:
Initialize-Disk 1 –PartitionStyle MBR
Если на диске уже имеются данные, вы можете изменить таблицу разделов с MBR в GPT без удаления данных с помощью утилиты mbr2gpt.exe.
Чтобы не указывать номер диска, можно инициализировать все диски с таблицей разделов RAW:
Get-Disk | Where-Object PartitionStyle –Eq ‘RAW’ | Initialize-Disk
Обратите внимание, что диск может находится в статусе RAW при повреждении таблицы разделов. Вы можете попробовать восстановить таблицу разделов и данные на RAW диске так.
Создаем разделы на диске
Чтобы создать новый раздел на диске используется командлет New-Partition. Создадим раздел размером 10 Гб и назначим ему букву диска L:
New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L

Если раздел должен занимать все доступное место на диске, используйте атрибут UseMaximumSize. Для автоматического назначения буквы диска используется параметр AssignDriveLetter (иногда буква диска может автоматически на назначаться).
New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize
Вы можете изменить назначенную букву диска так:
Set-Partition –DriveLetter L -NewDriveLetter U
Если нужно увеличить имеющийся раздел, сначала выведите доступное пространство для расширения для данного раздела:
Get-PartitionSupportedSize -DriveLetter L | Format-List
Потом можно увеличить размер раздела до максимального:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Если нужно сделать конкретный раздел активным используется команда:
Set-Partition -DriveLetter T -IsActive $true
Форматирование раздела из PowerShell
Отформатируем полученный раздел в файловой системе NTFS и зададим метку тома DBData:
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false

Удаление разделов на диске
Чтобы удалить все разделы на дисках 1 и 2 без подтверждения, выполните команду:
Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false

Для удаления с дисков всех разделов и полной очистки данных выполните команду:
Clear-Disk -Number 1 -RemoveData -Confirm:$false
Если на диски имеются OEM разделы (OEM раздел восстановления, EFI раздел , System Reserved) для их удаления нужно исползовать параметр RemoveOEM:
Clear-Disk -Number 1 -RemoveData –RemoveOEM
Следующая однострочная PowerShell команда инициализирует все новые подключенные диски типа RAW, создаст на них таблицу разделов и создаст раздел с файловой системой NTFS максимального размера. Ее удобно использовать при подключении нового диска:
Get-Disk |Where-Object PartitionStyle -eq ‘RAW’ |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false
Предыдущая статья Следующая статья
Powershell как перейти на другой диск
Итак, с командой pwd мы уже познакомились в первом уроке. А сейчас изучим еще несколько команд для оболочки командной строки Windows PowerShell.
Открываем Windows PowerShell и вводим следующую команду: cd desktop
PS С:\Users\Boris1985>cd desktop
Эта команда говорит компьютеру: перейди в каталог (в папку) desktop. То есть в «Рабочий стол» (по-русски).
Чтобы убедиться, что мы находимся в папке «Рабочий стол», нам надо ввести уже известную нам команду pwd :
PS С:\Users\Boris1985\desktop>pwd
Результат ввода этой команды:
Path
С:\Users\Boris1985\desktop
PS С:\Users\Boris1985\desktop> _Теперь вводим команду mkdir 1 . Эта команда говорит компьютеру: создай в текущем каталоге папку (каталог) с именем 1.
Результат будет такой:
Mode LastWriteTime Length Name d—- 12.03.2019 12:23 1 PS С:\Users\Boris1985\desktop> _
То есть компьютер создал в папке desktop новую папку 1 и сообщил об этом нам.
Чтобы убедиться, что так все и произошло, сверните все окна и посмотрите на рабочем столе – появилась папка 1 или нет. Должна появиться!
Теперь давайте создадим несколько вложенных одна в другую папок.
PS С:\Users\Boris1985\desktop> mkdir 1/2/3/4
Посмотрите на Рабочем столе внутри папки 1 – есть ли в ней вложенные папки 2, 3 и 4?
Теперь давайте перейдем сразу в 4-ю папку.
PS С:\Users\Boris1985\desktop> cd 1/2/3/4
Проверьте с помощью команды pwd , где вы находитесь.
А теперь перейдем на один уровень вверх. Для этого введем команду cd..
PS С:\Users\Boris1985\desktop\1\2\3\4>cd..
И опять проверьте каталог, где вы сейчас находитесь – командой pwd . Вы сейчас должны находиться папке 3. Точно также пройдите выше по папкам — до папки desktop. Для этого вводим:
PS С:\Users\Boris1985\desktop\1\2\3>cd..
PS С:\Users\Boris1985\desktop\1\2>cd..
PS С:\Users\Boris1985\desktop\1>cd..
Домашнее задание
- напечатайте в Windows PowerShell по 10 раз команды: cd, pwd, cd.. и mkdir
- проверьте — появились ли на рабочем столе созданные вами папки?
В следующем уроке мы научимся в окне Windows PowerShell создавать новый файл, а также удалять и просматривать содержимое папки — перейти в следующий урок.
- Вы здесь:
- Главная
- Python 2.7 с нуля
- Урок 2. Первые команды в Windows PowerShell