Командлет Invoke-WebRequest в PowerShell — удобный инструмент для отправки HTTP-запросов на веб-сайты. Если вы уже пользуетесь прокси-сервисами Bright Data, вы можете использовать этот командлет с прокси-сервером, указав параметр -Proxy, а затем сведения о прокси-сервере.
4 min read
Ознакомившись с этим руководством по прокси-серверу Invoke-WebRequest PowerShell, вы узнаете:
Давайте узнаем подробности!
Администратор файлового сервера Windows может вывести список открытых файлов в общей сетевой папке и принудительно закрыть заблокированные файлы, открытые пользователями в монопольном режиме. Если пользователь открыт файл в общей сетевой SMB папке на сервере на чтение и запись и забыл его закрыть (ушел домой, в отпуск), другие пользователи не смогут внести изменения в файл.
В этой статье мы рассмотрим, как получить список открытых файлов на файловом сервере Windows и пользователей, которые их используют, а также способы сброса файловых сессий для разблокировки открытых файлов.

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik. В прошлый раз мы с вами создали и разобрали скрипт PowerShell, который позволяет отслеживать переезды ролей файлового кластера между нодами. В сегодняшней статье я хочу пополнить свою коллекцию сценариев, которые могут вам быть полезны в вашей повседневной жизни. Задача заключается в том, чтобы отслеживать ряд файловых сетевых папок, которые опубликованы в DFS шаре на предмет их доступности по сети, данная необходимость появилась после интересного случая с зависание узла файлового кластера, который повесил всю систему распределения.
При подключении к новой сети Windows предлагает вам выбрать ее тип (профиль или сетевое расположение): Public network (общедоступная) или Private (частная). Сетевые профили Windows являются частью Microsoft Defender Firewall и позволяют применять различные правила брандмауэра в зависимости от типа сети, к которой подключен компьютер. В зависимости от примененного профиля для вашего сетевого подключения, другие компьютеры могут видеть или не видеть ваш компьютер в сети (настройки сетевого обнаружения), использовать общие папки и сетевые принтеры.
В этой статье мы рассмотрим, как в Windows (и Windows Server) изменить назначенный профиль сети с “общедоступной” на “частную” и наоборот.
Что такое PowerShell Invoke-WebRequest?
Invoke-WebRequest — это командлет PowerShell для отправки запросов HTTP, HTTPS и FTP веб-серверам и веб-службам. По умолчанию он автоматически анализирует ответ, полученный от сервера, и возвращает подборки форм, ссылок, изображений и других важных элементов HTML.
Обычно он используется для доступа к интерфейсам REST API, загрузки файлов из Интернета или взаимодействия с веб-службами. Ниже приведен базовый синтаксис запроса Invoke-WebRequest:
Invoke-WebRequest [-Uri] <Uri> [-Method <WebRequestMethod>] [-Headers <IDictionary>] [-Body <Object>]Ключевые параметры, которые следует запомнить:
- – Uri: URI веб-ресурса, на который отправлен запрос.
- – Method: HTTP-метод для использования в запросе (например, GET, POST, PUT, DELETE). Invoke-WebRequest по умолчанию отправляет запросы GET.
- – Headers — дополнительные HTTP-заголовки, которые необходимо включить в запрос.
- – Body — тело запроса для отправки на сервер.
Как видите, единственный обязательный аргумент — это
Invoke-WebRequest <Uri>Этот командлет был добавлен в PowerShell 3.0 в 2012 году.
Предварительные требования для начала работы с прокси-сервером в PowerShell
Чтобы начать использовать прокси-сервер PowerShell с Invoke-WebRequest, вам необходимо понять, как выглядит URL-адрес прокси-сервера.
Вот URL-адрес прокси-сервера PowerShell Invoke-WebRequest:
<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]Он включает следующее:
— протокол, используемый для подключения к прокси-серверу. — IP-адрес или URL-адрес имени хоста прокси-сервера. — номер порта, который прослушивает прокси-сервер. — необязательное имя пользователя, которое нужна указать, когда требуется аутентификация на прокси-сервере. — необязательный пароль, который нужно указать, когда требуется аутентификация на прокси-сервере.
Обратите внимание, что часть URL-адреса
Invoke-WebRequest: эта операция не поддерживается для относительного URI.
Что касается протоколов прокси-серверов, то наиболее популярными являются HTTP, HTTPS и SOCKS. В PowerShell 5.1 Invoke-WebRequest поддерживает только HTTP, а в PowerShell 7.x — также HTTPS и SOCKS.
Пора получить действительный прокси-сервер HTTP!
Вы можете найти его бесплатно в Интернете, как показано ниже:
Protocol: HTTP; IP Address: 190.6.23.219; Port: 999Подготовьте эту информацию, чтобы получить следующий URL-адрес прокси-сервера:
http://190.6.23.219:999Предупреждение
Бесплатные прокси-серверы можно использовать для обучения, но вы не можете полагаться на них в реальных ситуациях. Бесплатные прокси-серверы ненадежны, подвержены ошибкам, медленны, существенно ограничивают объем передаваемых данных и недолговечны. Не используйте их!
Каково решение? Прокси-серверы премиум-класса от Bright Data — лучшего поставщика данных услуг на рынке. Подпишитесь и попробуйте наши надежные прокси-серверы бесплатно.
http://admin-4521:@rUuH3tJqf45.103.203.109:9571Принудительно закрыть открытый файл на сервере Windows
Можно закрыть открытый файл через консоль Computer Management. Найдите файл в списке секции Open Files, выберите в контекстном меню пункт “Close Open File”.

Если на сервере по сети открыты сотни файлов, то найти нужный файл в графической консоли довольно сложно. Лучше использовать инструменты командной строки.
Закрыть файл можно, указав ID его SMB сессии. Получить ID сессии файла:

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:
Openfiles /Disconnect /ID 3489847304

SUCCESS: The connection to the open file "D:\path\REPORT2023.XLSX" has been terminated.
Вы разблокировали открытый файл и теперь его могут открыть другие пользователи.
Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corp\aivanova /id *
Можно закрыть открытый файл по ID сессии с помощью PowerShell командлета Close-SmbOpenFile.
Close-SmbOpenFile - SessionId 3489847304
Найти и закрыть открытый файл одной командой:

Для подтверждения сброса сессии и освобождения отрытого файла нажмите
Y
->
Enter
.
Чтобы закрыть файл без предупреждения, добавьте параметр
-Force
в последнюю команду.
С помощью Out-GridView можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратору нужно с помощью фильтров в таблице Out-GridView найти и выделить нужные файлы, а затем нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Принудительное закрытие открытого файла на файловом сервере, вызывает потерю несохраненных пользователем данных. Поэтому команды openfiles /disconnect и
Close-SMBOpenFile
нужно использовать с осторожностью.
Установка Invoke-WebRequest
Чтобы использовать Invoke-WebRequest, вам понадобится PowerShell. Итак, давайте узнаем, как установить PowerShell и получить доступ к командлету Invoke-WebRequest!
Windows
Во-первых, вы должны понять, что Windows PowerShell и PowerShell — это две разных программы. Windows PowerShell — это версия PowerShell, поставляемая вместе с Windows, и ее последняя версия — 5.1. Windows PowerShell содержит командлет Invoke-WebRequest. Это означает, что если вы используете современную версию Windows, вы готовы сразу же приступить к делу! При наличии более старых версий следуйте указаниям в официальном руководстве по установке PowerShell.
В то же время некоторые функции Invoke-WebRequest доступны только в версии PowerShell 7.x и более поздних версиях. Дополнительные сведения о том, как установить PowerShell 7.x, приводятся в официальном руководстве по миграции с Windows PowerShell 5.1 на PowerShell 7. Обратите внимание, что PowerShell 7.x устанавливается в новый каталог и работает параллельно с Windows PowerShell 5.1.
Вы можете узнать, какая версия PowerShell установлена на вашем компьютере под управлением ОС Windows, с помощью следующей команды:
$PSVersionTableВ PowerShell 7.x нужно ввести что-то вроде этого:
PSVersion 7.4.1
PSEdition Core
GitCommitId 7.4.1
OS Microsoft Windows 10.0.22631
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0macOS и Linux
Какой прокси-сервер PowerShell следует использовать?
Ответ на этот вопрос меняется в зависимости от того, чего вы хотите достичь с помощью запроса Invoke-WebRequest. Чтобы найти подходящий прокси-сервер PowerShell для ваших нужд, ознакомьтесь с различными типами доступных прокси-серверов:
- Прокси-серверы центров обработки данных: они быстрые и дешевые, но сайты могут легко обнаружить и заблокировать их из-за их идентифицируемых диапазонов IP-адресов.
- Резидентные прокси-серверы: они предлагают ротацию подлинных IP-адресов с реальных устройств в определенных местах. Это означает, что они могут гарантировать высокий уровень анонимности. Резидентные прокси-серверы идеально подходят для доступа к сайтам, использующим географические ограничения, или для обхода мер по борьбе с ботами.
- Прокси-серверы интернет-провайдеров (ISP): они безопасны, быстры и очень надежны, поскольку предоставляют статические IP-адреса устройств, зарегистрированных у интернет-провайдеров. Прокси-серверы ISP также называют резидентными статическими прокси-серверами, и они являются идеальным решением для мониторинга оптимизации поисковых систем (SEO) и исследования рынка.
- Мобильные прокси-серверы: они предоставляют IP-адреса с реальных мобильных устройств для обеспечения высокого уровня анонимности. Они полезны для доступа к приложениям, сайтам или контенту, специально разработанному для мобильных устройств.
Кто открыл файл в общей сетевой папке на сервере Windows?
Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:
Ключ /i используется, чтобы выполнялся поиск без учета регистра в имени файла.
Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:
С помощью PowerShell также можно получить информацию о пользователе, который открыл файл. Например:
Вывести все открытые по сети exe файлы:
Найти открытые файлы по части имени:
Вывести все файлы, открытые определенным пользователем:
Найти файлы, которые открыли с указанного компьютера:
Слетает доменный профиль сети на частную в Windows Server
В новых версиях Windows Server 2022/2019 периодически встречается глюк, когда на доменном сервере (или даже контроллере домена) тип сети сам меняется с доменной на частную после перезагрузки.
Для решения проблемы достаточно перезапустить службу Network Location Awareness (из консоли
services.msc
) или командой:
Чтобы служба Network Location Awareness при загрузке компьютера загружалась немного позже, можно задать для нее отложенный тип запуска. Для этого в свойствах службы нужно выбрать опцию Automatic (Delayed Start).

Проверьте, что после перезагрузки тип сети в Windows Server всегда определяется как доменный (вместо private).
Если проблема возникает на контроллере домена Active Directory, нужно изменить зависимости службу NlaSvc, чтобы она запускалась после службы DNS Server:
sc config nlasvc depend=DNS
Также в некоторых случаях вам может помочь принудительное указание DNS суффикса вашего домена в настройках сетевого адаптера (сетевой адаптера -> TCP/IPv4 -> Advanced -> DNS, укажите имя вашего домена в поле DNS suffix for this connection и проверьте, что включена опция «Use this connection’s suffix in DNS registration».

Изменить тип сети с Public на Private с помощью PowerShell
В Windows 10/11 и Windows Server 2022/2019/2016 вы можете управлять профилями сетевых подключений из PowerShell. Запустите консоль PowerShell с правами администратора.
Выведите список сетевых интерфейсов Windows и применённые к ним сетевых профилей:

Чтобы изменить профиль сети, нужно указать номер сетевого интерфейса, назначанный сетевому адаптеру (InterfaceIndex). В этом примере InterfaceIndex = 19.
Name : Неопознанная сеть InterfaceAlias : Ethernet 3 InterfaceIndex : 19 NetworkCategory : Public IPv4Connectivity : NoTraffic IPv6Connectivity : NoTraffic
Чтобы изменить тип сети для сетевого интерфейса с индексом 19 на Private, выполните команду:
Set-NetConnectionProfile -InterfaceIndex 19 -NetworkCategory Private
Проверим, что профиль сети изменился:
Get-NetConnectionProfile -InterfaceIndex 19

Windows Defender Firewall автоматически применит к сетевому подключению правила в соответствии с назначенным профилем без перезагрузки.
По аналогии вы можете изменить местоположение сети на Public:
Set-NetConnectionProfile -InterfaceIndex 19 -NetworkCategory Public
Set-NetConnectionProfile -InterfaceIndex 19 -NetworkCategory DomainAuthenticated
Также вы можете изменить профиль сети сразу для всех сетевых адаптеров компьютера:
На компьютерах в домене вы не сможете изменить профиль сетевого подключения с доменного на частный или публичный. Проверьте, что ваш компьютер добавлен в домен AD:
Get-CimInstance -ClassName Win32_ComputerSystem).PartOfDomain
Попробуйте изменить сетевой профиль:
Set-NetConnectionProfile -InterfaceIndex 19 -NetworkCategory Public –Verbose
Set-NetConnectionProfile : Unable to set the NetworkCategory due to one of the following possible reasons: not running PowerShell elevated; the NetworkCategory cannot be changed from 'DomainAuthenticated'; user initiated changes to NetworkCategory are being prevented due to the Group Policy setting 'Network List Manager Policies'.

Скрипт PowerShell проверяющий доступность сетевой шары с оповещением в Телеграм
# Функция для получения текущей даты и времени в формате MM.dd.yyyy HH:mm:ss
# Определение пути к папке для логов, используя переменную $PSScriptRoot и имя скрипта
$log_folder = “$PSScriptRoot\Logs\” + $($MyInvocation.MyCommand.Name -replace (“.ps1”, “”))
# Создание имени файла лога в формате “yyyy_MM_dd_HH_mm_ss.txt”
$log = “$log_folder\$(Get-Date -Format “yyyy_MM_dd_HH_mm_ss”).txt”
# Проверка наличия папки для логов, если нет – создание папки
# Запись в лог текущей даты и времени с сообщением “Start Processing”
# Получение имени текущего пользователя
# Запись в лог текущей даты и времени с сообщением о начале обработки папок в указанном пути
# Проверка наличия пути к папке
# Действия при успешном обнаружении пути
# Подсчет количества ошибок
# Проверка наличия ошибок
# Формирование данных для отправки в Telegram
# Установка протокола безопасности для запроса
# Отправка запроса на сервер Telegram для отправки сообщения
# Запись в лог текущей даты и времени с сообщением о завершении обработки
В результате если сетевая шара из списка будет недоступна вы получите вот такое сообщение в ваш канал:

Теперь можно оперативно проверить в чем дело, чтобы устранить причину. Надеюсь, что было полезно. На этом у меня все, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Как удаленно закрыть открытые по сети файлы с помощью PowerShell?
Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:
$sessn = New-CIMSession –Computername mskfs01
Также вы можете подключаться к удаленному серверам для запуска команд через командлеты PSRemoting: Enter-PSSession или Invoke-Command .
Следующая команда найдет сессию для открытого файла
*pubs.docx
и завершит ее.
Подтвердите закрытие файла, нажав
Y
. В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

С помощью PowerShell вы можете закрыть и осведомить на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:
Типы (профили) сети в Windows
Сетевому подключению в Windows (будь то Ethernet или Wi-Fi) можно назначить один из трех сетевых профилей.
- Частная или домашняя сеть (Private) – профиль для доверенной сети (домашняя или рабочая сеть в офисе). В такой сети компьютер будет доступен для обнаружения другими устройствами, на нем можно использовать службы общего доступа к сетевым файлам и принтерам;
- Общедоступная (общественная) сеть (Public / Guest) – профиль для недоверенной сети (кафе, публичная Wi-Fi сеть в метро, аэропорту). Вы не доверяете другим устройствам в такой сети, ваш компьютер будет скрыт для других устройств, нельзя получить удаленный доступ к опубликованным у вас сетевым папкам и принтерам;
- Доменная сеть (Domain) – сетевой профиль для компьютеров, которые присоединены в домен Active Directory. Применяется автоматически после добавления Windows в домен. Для этого профиля вы можете применять доменные политики брандмауэра.
В зависимости от типа сети, к сетевому интерфейсу применяются разные правила брандмауэра Windows.
В Windows 10 и 11 вы можете увидеть текущий профиль, который назначен сетевому подключению, в меню Settings -> Network and Internet (команда быстрого доступа
ms-settings:network
). Сетевому интерфейсу Ethernet0 в моем примере назначен профиль Public.

В классической панели управления Windows тип сети для активных сетевых подключений отображается здесь: Control Panel\All Control Panel Items\Network and Sharing Center.

Профиль сети в Windows 10 выбирается пользователем при первом подключении к новой сети. Появляется запрос:
Network_nameВы хотите разрешить другим компьютерам и устройствам в этой сети обнаруживать ваш ПК. Рекомендуется делать это в домашней или рабочей сети, а не в общедоступных.

Если выбрать “Да”, сети присваивается профиль Private (домашняя), если “Нет” – public (общедоступная). При следующем подключении к этой же самой LAN или WiFi сети автоматически назначается выбранный ранее профиль.
Вы можете скрыть мастер подключения к новым сетям (Network Location wizard) в Windows. Для этого откройте редактор реестра и создайте раздел HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Network\NewNetworkWindowOff. После этого все новые сети при подключении будут определяться как общедоступные (Public).
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
В Windows вы можете сбросить все настройки и профили для всех сохраненных сетей, выбрав Параметры -> Сеть и Интернет -> Состояние -> Сброс сети. Перезагрузите компьютер.

Теперь при подключении к сети опять появится запрос о включении сетевого обнаружения.
Сменить профиль сети через политику безопасности
Еще один способ смены типа сети — редактор локальной политики безопасности (Local Security Policy).

Примечание. Если сервер или компьютер включены в домен, изменить тип сети на другой нельзя, при перезагрузке тип все равно сменится на Domain Network.
Как указать прокси-сервер HTTP в Invoke-WebRequest
Прежде чем начать, запустите следующую команду в PowerShell:
Invoke-WebRequest "https://httpbin.org/ip"
That should print something like:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "194.34.233.12"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 32
Content-Type: application/json
Date: Thu, 01 Feb 2024 10:46:14 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 32]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 32Если вы хотите получить доступ только к полю «Контент», вы можете сделать это следующим образом:
$response = Invoke-WebRequest "https://httpbin.org/ip"
$response.Content
This would print:
{
"origin": "194.34.233.12"
}Использование параметра командной строки
Invoke-WebRequest предлагает флаг -Proxy для указания URL-адреса прокси-сервера для запроса.
Итак, синтаксис использования Invoke-WebRequest на прокси-сервере выглядит следующим образом:
Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>Если теперь вы выполните эту команду PowerShell:
Invoke-WebRequest -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"
Invoke-WebRequest -Uri "http://httpbin.org/ip" -Proxy "http://brd.superproxy.io:22225" -ProxyCredential (New-Object System.Management.Automation.PSCredential("brd-customer-CUSTOMER_ID-zone-ZONE’S_NAME", ("ZONE’S_PASSWORD" | ConvertTo-SecureString -AsPlainText -Force)))
The result should be:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "190.6.23.219"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 31
Content-Type: application/json
Date: Thu, 01 Feb 2024 12:36:56 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 31]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 31Примечание: не забывайте, что бесплатные прокси-серверы недолговечны! К тому времени, когда вы прочитаете это руководство, маловероятно, что вышеуказанный сервер все еще будет работать. В случае ошибки замените его новым прокси-сервером.
Использование переменных окружения
Начиная с версии PowerShell 7.0, Invoke-WebRequest поддерживает конфигурацию прокси-сервера с помощью переменных окружения.
Таким образом, другой способ использования прокси-сервера PowerShell в Invoke-WebRequest заключается в установке следующих двух окружений:
- HTTP_PROXY — это URL-адрес прокси-сервера, используемый для HTTP-запросов;
- HTTPS_PROXY — это URL-адрес прокси-сервера, используемый для HTTPS-запросов.
В Windows можно задать две переменные окружения, используя следующий синтаксис PowerShell:
$env:HTTP_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:HTTPS_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"В нашем примере команды будут выглядеть следующим образом:
$env:HTTP_PROXY = "http://190.6.23.219:999"
$env:HTTPS_PROXY = "http://190.6.23.219:999"В macOS и Linux вам необходимо использовать следующий синтаксис:
export HTTP_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export HTTPS_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"Итак, две команды будут следующими:
export http_proxy="http://190.6.23.219:999"
export https_proxy="http://190.6.23.219:999"Отныне каждый запрос Invoke-WebRequest будет проходить через указанные прокси-серверы без необходимости добавлять опцию -Proxy. После настройки envs запустите следующую команду:
Invoke-WebRequest "https://httpbin.org/ip"
You will get the same result as before:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "190.6.23.219"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 31
Content-Type: application/json
Date: Thu, 01 Feb 2024 12:36:56 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 31]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 31Чтобы отключить прокси-серверы Invoke-WebRequest, отключите переменные окружения с помощью:
$env:HTTP_PROXY = ""
$env:HTTPS_PROXY = ""
Or on macOS and Linux:
unset HTTP_PROXY
unset HTTPS_PROXYКак изменить профиль для сетевого подключения в Windows?
Вы можете изменить тип сети в Windows из современной панели управления Параметры: перейдите в раздел «Сеть и Интернет» -> «Состояние» -> Откройте свойства вашего сетевого подключения.
Здесь можно переключить сетевой профиль с Public на Private и наоборот.

В Windows Server 2022/2019 опция Properties отсутствует на вкладке Status. Поэтому нужно в секции Network and Internet выбрать раздел Ethernet (или раздел Wi-Fi если в Windows Server включена поддержка беспроводных сетей). Выберите ваше подключение к сети.

В классической панели управления Windows отсутствуют настройки для смены типа профиля сетевого подключения.
Также вы не можете сменить профиль на компьютере в домене AD. Для сетевого подключения к домену всегда будет использоваться профиль Domain.
Постановка задачи
В инфраструктуре есть домен Active Directory в его периметре есть DFS корень в котором опубликованы файловые шары.

Необходимо раз в час проводить проверку на доступность данного списка сетевых папок, зайдя в них с помощью определенной учетной записи у которой есть права на чтение.
- Делаем учетную запись в ADUC под данную задачу
- Назначаем в ACL или на файловых серверах права для этой учетной записи
- Делаем проверку через PowerShell
- В случае недоступности отправляем сообщение в чат мониторинга в Телеграм.
Как использовать прокси HTTPS и SOCKS в PowerShell
Если вам требуется использовать прокси-сервер HTTPS или SOCKS, необходимо обновить PowerShell до версии 7.x и выше. В противном случае Invoke-WebRequest завершится ошибкой:
Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой https.
Или в случае прокси-сервера SOCKS:
Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой socks.
При работе с прокси-серверами HTTPS или SOCKS в PowerShell 7.x структура команд Invoke-WebRequest остается прежней:
Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>Отличия заключаются в том, что
Если вы попытаетесь вызвать запрос через прокси-сервер, использующий протокол, отличный от указанного выше, вы получите следующую ошибку:
Invoke-WebRequest: Only the 'http', 'https', 'socks4', 'socks4a' and 'socks5' schemes are allowed for proxies.Таким образом, полный пример прокси-запроса Invoke-WebRequest SOCKS выглядит так:
Invoke-WebRequest -Proxy "socks5://94.14.109.54:3567" "http://httpbin.org/ip"
As you can expect, the result will be:
StatusCode : 200
StatusDescription : OK
Content : {
"origin": "94.14.109.54"
}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Length: 31
Content-Type: application/json
Date: Thu, 01 Feb 2024 12:47:56 GMT...
Forms : {}
Headers : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
true], [Content-Length, 31]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 31Изменить тип сети в реестре Windows
Чтобы найти нужную вам сеть, нужно просмотреть все ветки реестра и найти раздел, в котором указано имя нужной вам сети из панели управления (или значение Name из команды Get-NetConnectionProfile). В нашем случае компьютер подключен к сети Network 4.

Имя сети указано в строковом параметре реестра ProfileName. Тип сети задается в параметре Category. Доступны следующие значения этого ключа:
- 0 — Общественная сеть (Public Network)
- 1 — Частная сеть (Private Network)
- 2 — Доменная сеть (Domain Network)
Чтобы изменить тип сети, просто вручную изменить значение параметра Category. Перезагрузить компьютер чтобы применить изменения.
Необходимые советы и рекомендации
Ознакомьтесь с полезными уловками и ценными советами по работе с прокси-сервером PowerShell Invoke-WebRequest на профессиональном уровне.
Игнорирование конфигурации прокси-сервера PowerShell
Если вы хотите запретить Invoke-WebRequest использовать настроенный прокси-сервер PowerShell для чтения из переменных окружения, вы можете воспользоваться параметром -NoProxy следующим образом:
Invoke-WebRequest -NoProxy <Uri>
Эта команда предписывает Invoke-WebRequest связаться с
Чтобы убедиться в работоспособности данного подхода, настройте прокси-сервер в envs и запустите его:
Invoke-WebRequest -NoProxy "https://httpbin.org/ip"Avoid SSL Certificate ErrorsПри использовании прокси-сервера HTTP ваши запросы могут не выполняться из-за ошибок SSL-сертификата. Чтобы избежать этого, задайте параметр -SkipCertificateCheck:
Invoke-WebRequest -SkipCertificateCheck -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>– SkipCertificateCheck помогает избежать ошибок сертификатов, разрешая небезопасные подключения к серверу. Имейте в виду, что использование этого параметра небезопасно. Задавайте его только при работе с известными хостами.
Например, вы можете связываться с HTTPBin через прокси-сервер, обходя проблемы с SSL, с помощью следующего:
Invoke-WebRequest -SkipCertificateCheck -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"Вывод списка открытых файлов в сетевой папке Windows
Список открытых по сети файлов в Windows можно получить с помощью графической консоли Computer Management (Управление компьютером).
- Откройте консоль
compmgmt.msc
и перейдите в раздел System Tools -> Shared Folders -> Open files (Служебные программы -> Общие папки -> Открыты файлы); - В правой части окна отображается список открытых файлов. Здесь указаны локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Также вы можете вывести список открытых на сервере файлов из командной строки:
Openfiles /Query /fo csv
Команда возвращает номер сессии, имя пользователя, количество блокировок и полный путь к файлу.

Cо списком открытых файлов на сервере удобнее работать с помощью PowerShell командлета Get-SmbOpenFile:
В выводе команда содержится имя пользователя, имя (IP адрес) удаленного компьютера, с которого открыт файл), имя файла и ID файловой сессии.

Заключение
Из этого руководства по прокси-серверу PowerShell вы узнали, что представляет собой инструмент Invoke-WebRequest, как он работает и как его использовать с прокси-сервером HTTP/HTTPS/SOCKS. Как оказалось, нельзя полагаться на прокси-серверы от бесплатных поставщиков. Поэтому единственное решение, которое необходимо принять, — это выбор поставщика услуг прокси-серверов. Экономьте время и энергию и обращайтесь непосредственно к Bright Data — лучшей компании на рынке в этой области.
Bright Data управляет лучшими прокси-серверами в мире, обслуживая компании из списка Fortune 500 и более 20 000 клиентов. Ее всемирная сеть прокси-серверов включает в себя:
В целом, это одна из крупнейших и самых надежных на рынке прокси-сетей, ориентированных на скрейпинг.
Поговорите с одним из наших торговых представителей и узнайте, какие продукты Bright Data лучше всего отвечают вашим потребностям.
Кредитная карта не требуется
