не удается найти путь так как он не существует powershell

Блог творческого ИТ-практика. Возьми свою мысль и дай ей ускорение идеи. В моем фокусе: сети, безопасность, виртуализация, web, мультимедиа.

А А Friday, 8 December 2017

Варианты перехвата ошибок в PowerShell.

1. Объект ErrorRecord и поток ошибок.

Проверим теперь содержимое файла err.txt:
PS C:\> Get-Content err.txt
Get-ChildItem : Не удается найти путь «C:\Folder doesn’t exist»,
так как он не существует.
В строка:1 знак:4
+ dir err.txt
Как видите, в файл err.txt полностью записалось сообщение об ошибке, однако никакой дополнительной информации не появилось.

4. Мониторинг возникновения ошибки по коду возврата.

В качестве примера выполним команду интерпретатора cmd.exe, которая устанавливает нулевой код возврата. Для этого можно запустить cmd.exe с ключом /c (выполнить команду и завершить работу интерпретатора) и указать для исполнения команду exit 0:
PS C:\> cmd /c exit 0

5. Командлет Set-PSDebug и точки прерывания.

Процесс поиска ошибок в сценариях неразрывно связан с отладкой. Поэтому нам стоит упомянуть что основным встроенным инструментом для отладки сценариев является командлет Set-PSDebug. Параметры этого командлета позволяют включить режимы трассировки и пошагового выполнения команд, а также режим обязательного объявления переменных:
-Trace 0 Отключение трассировки
-Trace 1 Включение основного режима трассировки
-Trace 2 Включение полного режима трассировки
-Step Включение режима пошагового выполнения
-Strict Включение режима обязательного объявления переменных
-Off Отключение всех механизмов отладки.

Выход из вложенного сеанса с помощью инструкции Exit:
PS C:\>>> Exit
PS C:\>

Источник

Не удается использовать cd на Windows Powershell. Путь не найден

на powershell. Он выводит наружу

Данные устройства:

1 ответ

У меня есть функция, где я сохраняю файл в указанном пользователем месте. Я использую GetSaveFileName(), чтобы показать диалоговое окно Сохранить как. Затем я использую путь, который он возвращает, чтобы записать файл в это место. Я заметил, что он не работает, когда пользователь выбирает диск.

Похожие вопросы:

Обычно я могу найти ответ на PowerShell вопросов, исследуя форумы и адаптируясь. Однако, после поиска повсюду, я не могу найти ответ. Я вошел в систему как администратор домена, работающий на двух.

У меня есть функция, где я сохраняю файл в указанном пользователем месте. Я использую GetSaveFileName(), чтобы показать диалоговое окно Сохранить как. Затем я использую путь, который он возвращает.

У меня есть следующий powershell для перемещения файлов с сервера на локальный. Я все время получаю путь, который не найден. Путь длинный, как 280 символов + имя файла составляет от 30 до 70.

У меня есть старый блокнот с Windows 7 64-bit, который отлично выполняет сценарий PowerShell каждое воскресенье. К сожалению, он начинает ломаться, как только нагрузка увеличивается, и я решил.

Я работал над DevOps с VSTS. В настоящее время я использовал задачу “PowerShell” для запуска сценария PowerShell. Но, к сожалению, мое имя репозитория VSTS имеет пробел (например, WebApp Demo).

Источник

Управление текущим расположением

При навигации по системам папок в проводнике у вас обычно есть определенное рабочее расположение, т. е. текущая открытая папка. Элементами в текущей папке можно легко управлять, щелкая их. Когда в интерфейсе командной строки (например, Cmd.exe) открыта папка, в которой находится определенный файл, вы можете получить к нему доступ, указав короткое имя, а не вводить весь путь к файлу. Текущий каталог называется рабочим.

Windows PowerShell использует существительное Location для ссылки на рабочий каталог и реализует семейство командлетов для просмотра расположения и управления им.

Получение текущего расположения (Get-Location)

Чтобы определить путь к текущему каталогу, введите команду Get-Location :

Командлет Get-Location аналогичен команде pwd в оболочке BASH. Командлет Set-Location аналогичен команде cd в Cmd.exe.

Настройка текущего расположения (Set-Location)

Параметр PassThru можно использовать с некоторыми командами Set в Windows PowerShell для возврата сведений о результате, когда отсутствуют выходные данные по умолчанию.

После этого можно изменить расположение каталога на родительский каталог, который является корнем диска Windows PowerShell HKLM: с помощью относительного пути:

Вы можете ввести Set-Location или использовать любой из встроенных псевдонимов Windows PowerShell для Set-Location (cd, chdir, sl). Пример:

Сохранение и отзыв последних расположений (Push-Location и Pop-Location)

Например, Windows PowerShell обычно запускается в корневом каталоге пользователя.

Чтобы передать текущее расположение в стек, а затем переместить его в папку локальных параметров, введите:

После этого можно передать расположение локальных параметров в стек и переместить его в папку Temp, введя следующее:

Чтобы убедиться, что каталоги изменены, введите команду Get-Location :

Кроме того, можно использовать командлеты расположения с сетевыми путями. Если у вас есть сервер FS01 с общей папкой Public, можно изменить расположение, введя

Если дисковод пуст, вы получите следующее сообщение об ошибке:

В интерфейсе командной строки проводник неудобно использовать для просмотра свободных физических дисков. Также в проводнике будут показаны не все диски PowerShell. Windows PowerShell предоставляет набор команд для управления дисками Windows PowerShell, о которых речь пойдет далее.

Источник

Сведения об удаленной диагностике

Краткое описание

Описывает устранение неполадок удаленных операций в PowerShell.

Подробное описание

В этом разделе описываются некоторые проблемы, которые могут возникнуть при использовании функций удаленного взаимодействия PowerShell, основанных на технологии WS-Management и предлагающих решения этих проблем.

Устранение неполадок разрешений и проверки подлинности

В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с разрешениями пользователя и компьютера и требованиями удаленного взаимодействия.

Запуск от имени администратора

для запуска Windows PowerShell с параметром запуск от имени администратора :

щелкните правой кнопкой мыши значок Windows PowerShell (или Windows PowerShell ISE) и выберите команду запуск от имени администратора.

для запуска Windows PowerShell с параметром запуск от имени администратора в Windows 7 и Windows Server 2008 R2.

на панели задач Windows щелкните правой кнопкой мыши значок Windows PowerShell и выберите команду запуск от имени администратора.

в Windows Server 2008 R2 значок Windows PowerShell закреплена на панели задач по умолчанию.

Как включить удаленное взаимодействие

Для включения отправки удаленных команд на компьютере не требуется настраивать конфигурацию. Однако для получения удаленных команд на компьютере должна быть включена служба удаленного взаимодействия PowerShell. Включение включает запуск службы WinRM, задание для типа запуска службы WinRM значения автоматически, создание прослушивателей для соединений HTTP и HTTPS и создание конфигураций сеансов по умолчанию.

Windows PowerShell удаленное взаимодействие включено в Windows Server 2012 и более новых выпусках Windows сервера по умолчанию. Во всех остальных системах выполните командлет, Enable-PSRemoting чтобы включить удаленное взаимодействие. можно также выполнить командлет, Enable-PSRemoting чтобы повторно включить удаленное взаимодействие на Windows Server 2012 и более новых выпусках Windows Server, если удаленное взаимодействие отключено.

Чтобы настроить компьютер для получения удаленных команд, используйте Enable-PSRemoting командлет. Следующая команда включает все необходимые удаленные параметры, включает конфигурации сеанса и перезапускает службу WinRM, чтобы изменения были эффективными.

Чтобы отключить все запросы пользователя, введите:

Дополнительные сведения см. в разделе Enable-PSRemoting.

Как включить удаленное взаимодействие на предприятии

Чтобы разрешить одному компьютеру получать удаленные команды PowerShell и принимать подключения, используйте Enable-PSRemoting командлет.

Чтобы включить удаленное взаимодействие для нескольких компьютеров в Организации, можно использовать следующие масштабируемые параметры.

чтобы задать автоматический тип запуска служба удаленного управления Windows (WinRM) на нескольких компьютерах, используйте Set-Service командлет.

Включение прослушивателей с помощью групповой политики

Чтобы настроить прослушиватели для всех компьютеров в домене, включите политику Разрешить автоматическую настройку прослушивателей в следующем групповая политика пути:

Включите политику и укажите фильтры IPv4 и IPv6. Допускаются подстановочные знаки ( * ).

Включение удаленного взаимодействия в общедоступных сетях

Enable-PSRemoting Командлет возвращает эту ошибку, если локальная сеть является общедоступной, а параметр SkipNetworkProfileCheck не используется в команде.

в серверных версиях Windows, Enable-PSRemoting выполняются на всех типах сетевых расположений. Он создает правила брандмауэра, разрешающие удаленный доступ к частным и доменным (домашним и рабочим) сетям. Для общедоступных сетей он создает правила брандмауэра, разрешающие удаленный доступ из той же локальной подсети.

Чтобы удалить ограничение локальной подсети в общедоступных сетях и разрешить удаленный доступ из любого расположения, выполните следующую команду:

Set-NetFirewallRule Командлет экспортируется модулем NetSecurity.

Имя правила брандмауэра может отличаться для разных версий Windows. Используйте Get-NetFirewallRule для просмотра списка правил. Перед включением правила брандмауэра просмотрите параметры безопасности в правиле, чтобы убедиться, что конфигурация подходит для вашей среды.

в Windows PowerShell 2,0, на компьютерах с серверными версиями Windows, Enable-PSRemoting создает правила брандмауэра, разрешающие удаленный доступ в частных, доменных и общедоступных сетях. на компьютерах с клиентскими версиями Windows Enable-PSRemoting создает правила брандмауэра, разрешающие удаленный доступ только в частных и доменных сетях.

Как включить исключение брандмауэра с помощью групповой политики

чтобы включить исключение брандмауэра на всех компьютерах в домене, включите политику Windows брандмауэр: разрешить исключения локальных портов в следующем групповая политика пути:

эта политика позволяет членам группы администраторов на компьютере использовать Windows брандмауэр на панели управления для создания исключения брандмауэра для службы служба удаленного управления Windows.

Если конфигурация политики неверна, может появиться следующее сообщение об ошибке:

Как задать тип запуска службы WinRM

удаленное взаимодействие PowerShell зависит от службы служба удаленного управления Windows (WinRM). Служба должна быть запущена для поддержки удаленных команд.

в серверных версиях Windows тип запуска службы служба удаленного управления Windows (WinRM) автоматически.

однако в клиентских версиях Windows служба WinRM отключена по умолчанию.

Чтобы задать тип запуска службы на удаленном компьютере, используйте Set-Service командлет.

Чтобы выполнить команду на нескольких компьютерах, можно создать текстовый файл или CSV-файл с именами компьютеров.

Например, следующие команды получают список имен компьютеров из Servers.txt файла, а затем задает для всех компьютеров Автоматический тип запуска службы WinRM.

Повторное создание конфигураций сеансов по умолчанию

Чтобы подключиться к локальному компьютеру и выполнить команды удаленно, локальный компьютер должен включать конфигурации сеанса для удаленных команд.

Если конфигурации по умолчанию на компьютере не зарегистрированы или удалены, используйте Enable-PSRemoting командлет для их повторного создания. Этот командлет можно использовать многократно. Если функция уже настроена, она не создает ошибок.

При изменении конфигураций сеансов по умолчанию и необходимости восстановления исходных конфигураций сеансов по умолчанию используйте Unregister-PSSessionConfiguration командлет для удаления измененных конфигураций сеанса, а затем используйте Enable-PSRemoting командлет для их восстановления. Enable-PSRemoting не изменяет существующие конфигурации сеанса.

При Enable-PSRemoting восстановлении конфигурации сеанса по умолчанию не создаются явные дескрипторы безопасности для конфигураций. Вместо этого конфигурации наследуют дескриптор безопасности Рутсддл, который является безопасным по умолчанию.

Чтобы просмотреть дескриптор безопасности Рутсддл, введите:

Дополнительные сведения о диске WSMan: см. в разделе справки по поставщику WSMan («Get-Help WSMAN»).

Как указать учетные данные администратора

Чтобы создать сеанс PSSession или выполнить команды на удаленном компьютере, по умолчанию текущий пользователь должен быть членом группы администраторов на удаленном компьютере. Учетные данные иногда требуются даже при входе текущего пользователя в учетную запись, которая является членом группы «Администраторы».

Если текущий пользователь является членом группы «Администраторы» на удаленном компьютере или может предоставить учетные данные члена группы «Администраторы», используйте параметр Credential New-PSSession Enter-PSSession Invoke-Command командлета или, чтобы подключиться удаленно.

Например, следующая команда предоставляет учетные данные администратора.

Дополнительные сведения о параметре Credential см. в разделе New-PSSession, Enter-PSSession или Invoke-Command.

Включение удаленного взаимодействия для пользователей, не являющихся администраторами

Чтобы установить PSSession или выполнить команду на удаленном компьютере, пользователь должен иметь разрешение на использование конфигураций сеансов на удаленном компьютере.

По умолчанию разрешения на использование конфигураций сеансов по умолчанию имеют только члены группы «Администраторы» на компьютере. Таким образом, только члены группы «Администраторы» могут подключаться к компьютеру удаленно.

Чтобы разрешить другим пользователям подключаться к локальному компьютеру, предоставьте пользователю разрешения на выполнение конфигураций сеансов по умолчанию на локальном компьютере.

Следующая команда открывает страницу свойств, которая позволяет изменить дескриптор безопасности конфигурации сеанса Microsoft. PowerShell по умолчанию на локальном компьютере.

Дополнительные сведения см. в разделе about_Session_Configurations.

Включение удаленного взаимодействия для администраторов в других доменах

Если пользователь в другом домене входит в группу администраторов на локальном компьютере, он не может удаленно подключиться к локальному компьютеру с правами администратора. По умолчанию удаленные подключения из других доменов выполняются только с маркерами прав обычного пользователя.

Запись LocalAccountTokenFilterPolicy отключает удаленные ограничения контроля учетных записей (UAC) для всех пользователей всех затронутых компьютеров. Прежде чем изменять политику, внимательно изучите последствия этого параметра.

Чтобы изменить политику, используйте следующую команду, чтобы присвоить параметру реестра LocalAccountTokenFilterPolicy значение 1.

Использование IP-адреса в удаленной команде

Параметр ComputerName New-PSSession Enter-PSSession Invoke-Command командлетов, и принимает IP-адрес как допустимое значение. Однако так как проверка подлинности Kerberos не поддерживает IP-адреса, проверка подлинности NTLM используется по умолчанию при указании IP-адреса.

При использовании проверки подлинности NTLM для удаленного взаимодействия требуется следующая процедура.

Настройте компьютер для транспорта HTTPS или добавьте IP-адреса удаленных компьютеров в список TrustedHosts на локальном компьютере.

Используйте параметр Credential во всех удаленных командах.

Это необходимо даже при отправке учетных данных текущего пользователя.

Удаленное подключение с компьютера, созданного в Рабочей группе

Если локальный компьютер не входит в домен, для удаленного взаимодействия требуется следующая процедура.

Настройте компьютер для транспорта HTTPS или добавьте имена удаленных компьютеров в список TrustedHosts на локальном компьютере.

Убедитесь, что пароль установлен на компьютере рабочей группы. Если пароль не задан или значение пароля пусто, то нельзя выполнять удаленные команды.

Чтобы задать пароль для учетной записи пользователя, используйте учетные записи пользователей в панели управления.

Используйте параметр Credential во всех удаленных командах.

Это необходимо даже при отправке учетных данных текущего пользователя.

Добавление компьютера в список надежных узлов

Элемент TrustedHosts может содержать разделенный запятыми список имен компьютеров, IP-адресов и полных доменных имен. Разрешено использовать подстановочные знаки.

Чтобы просмотреть или изменить список надежных узлов, используйте диск WSMan:. Элемент Трустедхост находится в WSMan:\localhost\Client узле.

Только члены группы «Администраторы» на компьютере имеют разрешение на изменение списка доверенных узлов на компьютере.

Внимание! значение, заданное для элемента TrustedHosts, влияет на всех пользователей компьютера.

Чтобы просмотреть список доверенных узлов, используйте следующую команду:

Можно также использовать Set-Location командлет (Alias = CD) для перемещения по адресу WSMan: Drive в расположение. Пример:

Чтобы добавить все компьютеры в список доверенных узлов, используйте следующую команду, которая помещает в ComputerName значение * (ALL).

Можно также использовать подстановочный знак ( * ) для добавления всех компьютеров в определенном домене в список доверенных узлов. Например, следующая команда добавляет все компьютеры из домена Fabrikam в список доверенных узлов.

Чтобы добавить имена определенных компьютеров в список доверенных узлов, используйте следующий формат команды:

где каждое значение должно иметь следующий формат:

Чтобы добавить имя компьютера в существующий список доверенных узлов, сначала сохраните текущее значение в переменной, а затем задайте в качестве значения список с разделителями-запятыми, включающий текущие и новые значения.

Например, чтобы добавить компьютер Server01 в существующий список доверенных узлов, используйте следующую команду:

Чтобы добавить IP-адреса определенных компьютеров в список доверенных узлов, используйте следующий формат команды:

Чтобы добавить компьютер в список TrustedHosts на удаленном компьютере, используйте Connect-WSMan командлет, чтобы добавить узел для удаленного компьютера на диск WSMan: на локальном компьютере. Затем используйте Set-Item команду, чтобы добавить компьютер.

дополнительные сведения о Connect-WSMan командлете см. в разделе Подключение-WSMan.

Устранение проблем с конфигурацией компьютера

В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с определенными конфигурациями компьютера, домена или предприятия.

Настройка удаленного взаимодействия на альтернативных портах

Удаленное взаимодействие PowerShell по умолчанию использует порт 80 для транспорта HTTP. Порт по умолчанию используется каждый раз, когда пользователь не задает параметры ConnectionURI или Port в удаленной команде.

Чтобы изменить порт по умолчанию, используемый PowerShell, используйте Set-Item командлет на диске WSMan:, чтобы изменить значение порта на конечном узле прослушивателя.

Например, следующая команда изменяет порт по умолчанию на 8080.

Настройка удаленного взаимодействия с помощью прокси-сервера

Поскольку удаленное взаимодействие PowerShell использует протокол HTTP, на него влияют параметры HTTP-прокси. В организациях, имеющих прокси-серверы, пользователи не могут напрямую получить доступ к удаленному компьютеру PowerShell.

Чтобы устранить эту проблему, используйте параметры настройки прокси-сервера в удаленной команде. Доступны следующие параметры.

Чтобы задать эти параметры для определенной команды, выполните следующую процедуру.

Используйте параметры проксякцесстипе, проксяусентикатион и ProxyCredential New-PSSessionOption командлета, чтобы создать объект параметров сеанса с параметрами прокси-сервера для вашей организации. Сохраните объект параметра — это переменная.

Например, следующая команда создает объект параметра сеанса с параметрами сеанса прокси-сервера, а затем использует объект для создания удаленного сеанса.

Дополнительные сведения о New-PSSessionOption командлете см. в разделе New-PSSessionOption.

Обнаружение 32-разрядного сеанса на 64-разрядном компьютере

Дополнительные сведения о конфигурациях сеансов см. в разделе about_Session_Configurations.

Устранение проблем политики и предпочтений

В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с политиками и предпочтениями, заданными на локальном и удаленном компьютерах.

Изменение политики выполнения для Import-PSSession и Import-Module

Import-PSSession Export-PSSession Командлеты и создают модули, которые содержат неподписанные файлы скриптов и файлы форматирования.

Чтобы импортировать модули без изменения политики выполнения для локального компьютера, установленного в реестре, используйте параметр Scope параметра, Set-ExecutionPolicy чтобы задать менее ограниченную политику выполнения для одного процесса.

Кроме того, с помощью параметра ExecutionPolicy можно PowerShell.exe запустить один сеанс с менее ограниченной политикой выполнения.

Как задать и изменить квоты

Квоты можно использовать для защиты локального компьютера и удаленного компьютера от чрезмерного использования ресурсов, как случайных, так и вредоносных.

В базовой конфигурации доступны следующие квоты.

Поставщик WSMan (WSMan:) предоставляет несколько параметров квот, таких как параметры максенвелопесизекб и макспровидеррекуестс в узле, WSMan: а также параметры максконкуррентоператионс, свойств maxconcurrentoperationsperuser и MaxConnections в WSMan: \Service узле.

Защитить удаленный компьютер можно, добавив ограничения в конфигурации сеанса, например с помощью параметров максимумрецеиведдатасизеперкоммандмб и максимумрецеиведобжектсиземб Register-PSSessionConfiguration командлета.

При конфликте квот с помощью команды PowerShell создает ошибку.

Чтобы устранить эту ошибку, измените удаленную команду так, чтобы она соответствовала квоте. Или определите источник квоты, а затем увеличьте квоту, чтобы завершить выполнение команды.

Например, следующая команда увеличивает квоту размера объекта в конфигурации сеанса Microsoft. PowerShell на удаленном компьютере с 10 МБ (значение по умолчанию) до 11 МБ.

Дополнительные сведения о WS-Management квотах см. в разделе about_WSMan_Provider.

Устранение ошибок времени ожидания

Можно использовать время ожидания для защиты локального компьютера и удаленного компьютера от чрезмерного использования ресурсов, как случайных, так и вредоносных. Если время ожидания задано как на локальном, так и на удаленном компьютере, PowerShell использует самые короткие параметры времени ожидания.

В базовой конфигурации доступны следующие тайм-ауты.

Поставщик WSMan (WSMan:) предоставляет несколько параметров времени ожидания на стороне клиента и службы, например параметр макстимеаутмс в WSMan: узле и параметры енумератионтимеаутмс и макспаккетретриевалтимесекондс в WSMan: \Service узле.

Кроме того, можно защитить удаленный компьютер, задавая значения времени ожидания программным способом в конфигурации сеанса для сеанса.

Если значение времени ожидания не позволяет завершить операцию, PowerShell завершает операцию и создает ошибку.

Чтобы устранить эту ошибку, измените команду для завершения в течение интервала времени ожидания или определите источник предельного времени ожидания и Увеличьте интервал времени ожидания, чтобы завершить выполнение команды.

Дополнительные сведения об истечении времени ожидания WS-Management см. в разделе справки по поставщику WSMan (тип Get-Help WSMan ).

Дополнительные сведения о New-PSSessionOption командлете см. в разделе New-PSSessionOption.

Устранение неполадок при неотвечающем взаимодействиях

В этом разделе обсуждаются проблемы удаленного взаимодействия, препятствующие выполнению команды и предотвращению или задержке возврата командной строки PowerShell.

Прерывание команды

некоторые программы машинного Windows, такие как программы с пользовательским интерфейсом, консольные приложения, запрашивающие входные данные, и консольные приложения, использующие API консоли Win32, не работают должным образом на удаленном узле PowerShell.

При использовании этих программ может возникнуть непредвиденное поведение, например отсутствие выходных данных, частичный вывод или удаленная команда, которая не завершена.

Восстановление после сбоя операции

Эта ошибка возвращается в случае завершения операции до ее завершения. Как правило, это происходит, когда служба WinRM останавливается или перезапускается во время выполнения других операций WinRM.

Чтобы устранить эту проблему, убедитесь, что служба WinRM запущена, и повторите команду.

Выполните следующую команду:

Повторно выполните команду, вызвавшую ошибку.

Ограничения Linux и macOS

Аутентификация

В macOS работает только обычная проверка подлинности, и попытка использовать другие схемы проверки подлинности может привести к сбою процесса.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *