Помогите программно создать сетевой диск насервере

sudo apt remove powershell

Встроенная утилита CHKDSK.exe (check disk) используется в Windows для проверки диска на ошибки. Сhkdsk проверяет файловую систему на физические и логические ошибки, находит поврежденные секторы (bad sectors) и исправляет найденные проблемы.

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

Данная инструкция является адаптацией статьи на портале MIcrosoft

GitHub v7.0.3 Release of PowerShell

Инструкция применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с подключенным расширенным репозиторием
  • Astra Linux Special Edition РУСБ.10015-10 с подключенным расширенным репозиторием
  • Astra Linux Special Edition РУСБ.10015-17 с подключенным расширенным репозиторием
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7) с подключенным расширенным репозиторием
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6) с подключенным расширенным репозиторием
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • с установленным обновлением БЮЛЛЕТЕНЬ № 20200722SE16 (оперативное обновление 6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
    с установленным обновлением Бюллетень № 20201007SE81
  • Astra Linux Common Edition 2.12.29

OS Windows 7
Пытаюсь получить следующую информацию:
Системный диск (полное название);
Тип диска (HDD,SSD)
Модуль Storage идет только от win 8 и выше.
Через класс win32_DiskDrive получилось вытащить только полное название дисков.


  • Вопрос задан

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
For Each objItem in colItems
    Wscript.Echo "Availability: " & objItem.Availability
    Wscript.Echo "BytesPerSector: " & objItem.BytesPerSector
    Wscript.Echo "Capabilities: " & objItem.Capabilities
    Wscript.Echo "CapabilityDescriptions: " & objItem.CapabilityDescriptions
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "CompressionMethod: " & objItem.CompressionMethod
    Wscript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode
    Wscript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig
    Wscript.Echo "CreationClassName: " & objItem.CreationClassName
    Wscript.Echo "DefaultBlockSize: " & objItem.DefaultBlockSize
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "DeviceID: " & objItem.DeviceID
    Wscript.Echo "ErrorCleared: " & objItem.ErrorCleared
    Wscript.Echo "ErrorDescription: " & objItem.ErrorDescription
    Wscript.Echo "ErrorMethodology: " & objItem.ErrorMethodology
    Wscript.Echo "Index: " & objItem.Index
    Wscript.Echo "InstallDate: " & objItem.InstallDate
    Wscript.Echo "InterfaceType: " & objItem.InterfaceType
    Wscript.Echo "LastErrorCode: " & objItem.LastErrorCode
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "MaxBlockSize: " & objItem.MaxBlockSize
    Wscript.Echo "MaxMediaSize: " & objItem.MaxMediaSize
    Wscript.Echo "MediaLoaded: " & objItem.MediaLoaded
    Wscript.Echo "MediaType: " & objItem.MediaType
    Wscript.Echo "MinBlockSize: " & objItem.MinBlockSize
    Wscript.Echo "Model: " & objItem.Model
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "NeedsCleaning: " & objItem.NeedsCleaning
    Wscript.Echo "NumberOfMediaSupported: " & objItem.NumberOfMediaSupported
    Wscript.Echo "Partitions: " & objItem.Partitions
    Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
    Wscript.Echo "PowerManagementCapabilities: " & objItem.PowerManagementCapabilities
    Wscript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported
    Wscript.Echo "SCSIBus: " & objItem.SCSIBus
    Wscript.Echo "SCSILogicalUnit: " & objItem.SCSILogicalUnit
    Wscript.Echo "SCSIPort: " & objItem.SCSIPort
    Wscript.Echo "SCSITargetId: " & objItem.SCSITargetId
    Wscript.Echo "SectorsPerTrack: " & objItem.SectorsPerTrack
    Wscript.Echo "Size: " & objItem.Size
    Wscript.Echo "Status: " & objItem.Status
    Wscript.Echo "StatusInfo: " & objItem.StatusInfo
    Wscript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName
    Wscript.Echo "SystemName: " & objItem.SystemName
    Wscript.Echo "TotalCylinders: " & objItem.TotalCylinders
    Wscript.Echo "TotalHeads: " & objItem.TotalHeads
    Wscript.Echo "TotalSectors: " & objItem.TotalSectors
    Wscript.Echo "TotalTracks: " & objItem.TotalTracks
    Wscript.Echo "TracksPerCylinder: " & objItem.TracksPerCylinder
Next

15 июл. 2024, в 14:08

5000 руб./за проект

15 июл. 2024, в 13:59

10000 руб./за проект

15 июл. 2024, в 13:58

150000 руб./за проект

2.

glek

Сейчас в теме

(1) Доступ у серверного пользователя на сетевую папку (на ***компьютер***)?

6.

ZIGRAS

Сейчас в теме

(2) Доступа естественно нету. Его нужно получать в виде создания сетевого диска.

10.

independ

Сейчас в теме

18.

independ

Сейчас в теме

(1) если есть возможность на удаленном компьютере с сетевой папкой поднять службу ftp, далее средствами 1с копировать на ftp файлы

3.

maks_20

Сейчас в теме

7.

ZIGRAS

Сейчас в теме

Попробовал ответ “Код возврата Net use: 2″(

4.

Dr.HiHi

Сейчас в теме

у Вас клиент и сервер один и тот же ПК??

проверьте пользователя ОС в процедуре НаСервере

8.

ZIGRAS

Сейчас в теме

(4) Да сервер под Администратором

5.

binx

Сейчас в теме

Попробуйте проделать выше предложенные советы через функцию БСП ФайловаяСистема.ЗапуститьПрограмму

можно настроить на вывод потока ошибок. Увидите что за ошибка возникает

9.

ZIGRAS

Сейчас в теме

(5) “Код возврата Net use: 2″(

11.

ZIGRAS

Сейчас в теме

С этой командной видны ошибки.

WshShell = Новый COMObject("WScript.Network");  
WshShell.MapNetworkDrive("K:", "\\Desktop-111111\тест", , "Пользователь", "Пароль");

В общем НаКлинете все ОК.

НаСервере первый раз выполняешь ошибок нет, диска тоже нет. При повторе пишет:

“Произошла исключительная ситуация (WSHNetwork.MapNetworkDrive): Имя локального устройства уже используется.”

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

Причем при повторном выборе уже использованной буквы он сразу впадает в ошибку что она уже используется. Даже не знаю куда копать.

На всякий проверил пользователя ОС НаСервере – Админ

12.

independ

Сейчас в теме

(11) сетевой диск на сервере подключается с какой целью? копировать файлы?

На всякий проверил пользователя ОС НаСервере – Админ

Вообще проблема не нова:

https://forum.infostart.ru/forum9/topic264716/

– решения там нет, только информация к размышлению.

13.

ZIGRAS

Сейчас в теме

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

14.

Dr.HiHi

Сейчас в теме

КомандаСистемы("net use \\***Компьютер***\тест /user:***Пользователь*** ***Пароль***");

15.

ZIGRAS

Сейчас в теме

(14) Проблема в том мне не надо постоянно держать открытым доступ. По вашему варианту тоже можно добавлять-удалять доступ не создавая диск, но я проверил все равно команды отрабатывают только НаКлиенте

WshShell = Новый COMObject("WScript.Shell");
	WshShell.Run("net use \\Desktop-111111 \тест /user:Пользователь Пароль");

        WshShell = Новый COMObject("WScript.Shell");
	WshShell.Run("net use \\Desktop-111111 /delete");

16.

independ

Сейчас в теме

(13) понятно, попробуйте скопировать файл через cmd, примерно

net use \\pc\share /user:user password
copy c:\temp\file.zip \\pc\share\file.zip
exit

запуск из 1c

ЗапуститьПриложение("c:\temp\rcopy.cmd")

19.

ZIGRAS

Сейчас в теме

(16) ЗапуститьПриложение(“c:\temp\rcopy.cmd”) при запуске говорит не удалось запустить, не удалось найти файл. Можно поподробней.

Попробовал так не помогло

 КодВозврата = Неопределено;
ЗапуститьПриложение("cmd /c net use \\Desktop-111111\тест ПАРОЛЬ /user:ПОЛЬЗОВАТЕЛЬ",,Истина, КодВозврата);
Сообщить("Код возврата Net use: " + КодВозврата);

20.

ZIGRAS

Сейчас в теме

(17) Это администратор точно

Помогите программно создать сетевой диск насервере

Помогите программно создать сетевой диск насервере

21.

Dr.HiHi

Сейчас в теме

и еще попробовать не по имени(“\\Desktop-111111\тест”), а по ip (“\\0.0.0.0\тест”) достучаться

22.

ZIGRAS

Сейчас в теме

(21) В том то и проблема что НаКлиенте и в CMD все работает, НаСервере нет. В сетевую папку все заходит(

:/>  Как перейти на другую строчку на клавиатуре

Всем привет! Порой, написать графическую форму для консольного приложения может оказаться очень удобным решением, тем самым не нужно запоминать все ключи программы, особенно, если пользоваться им приходится изредка, тем самым автоматизируя работу с данным приложением в дальнейшем. Но, ситуация может быть обратной, когда приложение имеет только графический интерфейс, а вам нужно получить вывод его работы в консоли, например, для возможности передачи метрик в систему мониторинга. С тех пор как начал проводить все больше времени в консоли, заметил, что становится менее удобно переключаться на ранее привычные инструменты, лишний раз использовать мышь, держать открытыми излишние приложения или вкладки в браузере, особенно, если работаешь на удаленной машине без прямого доступа к графическому интерфейсу. У меня накопилась небольшая коллекция полезных модулей, большинство из которых написаны совсем недавно, успел привыкнуть при регулярном использовании и хотелось бы ими поделиться. Осознавая, что тенденция ухода Windows систем на территории РФ растет, тем не менее думаю еще очень много людей, кто так же как и я продолжают использовать данную систему и автоматизировать свою работу, возможно, представленные модули так же смогут пригодятся. Все модули опубликованы в репозитории на GitHub и менеджере пакетов Nuget, откуда их можно установить одной командой.

PowerShell модуль представляет собой набор функций, которых объединяет между собой файл с расширением psm1 и манифест psd1 (последний не обязателен для работы модуля, нужен для его описания). Модули используют для взаимодействия с приложением или целой системой (например, система хранения TrueNAS, резервного копирования Veeam, виртуализации VMWare или Hyper-V, различными системами баз данных и т.п.), с возможностью повторного применения описанных в нем функций на уровне системы и его массового распространения через менеджеров пакетов. Еще модуль можно воспринимать как cli (интерфейс командной строки) для конкретного приложения, тем самым позволяя взаимодействовать с ним оперируя параметрами в консоли, при этом имея возможность для дальнейшей автоматизации или интеграции с другими сервисами напрямую через язык PowerShell. Например, команда для вывода содержимого файлов в консоли Get-Content, или более привычный для Linux систем псевдоним cat по факту представляет PowerShell функцию, базирующуюся на .NET, которая в свою очередь входит в состав модуля Microsoft.PowerShell.Management.

Console-Translate

На протяжении нескольких лет я пользуюсь переводчиком DeepL практически на ежедневной основе. Меня не всегда устраивает то, что у него есть ограничение в 1500 символов, тем не менее, так как у него есть полноценное десктопное приложение, это удобная альтернатива браузерным решениям, которое всегда под рукой на горячей клавише. Сменив место работы, и получив ограничение в самостоятельной установке какого-либо стороннего программного обеспечения на рабочем ноутбуке, пришлось задуматься в сторону альтернативного и простого решения, так как пользоваться переводчиком и при этом консолью я реже не стал, пришла идея использовать единый интерфейс. Для доступа к переводу текста в консоли можно использовать REST API, к сожалению, получить бесплатный ключ доступа DeepL для России невозможно, но тут можно найти много альтернатив. Во-первых, существует проект DeepLX с открытым исходным кодом, с помощью которого можно запустить свой бесплатный API-сервер, который может быть доступен одновременно нескольким пользователям в сети. Во-вторых, каждый, кто использует расширение Google Translate в своем браузере может перехватить публичный API-ключ (используя интерфейс DevTools во вкладке Network) с возможностью его использования через любой REST-клиент в консоли. И в-третьих, существует немало бесплатных провайдеров для перевода текста с наличием API, например MyMemory, которая содержит одну из крупнейших баз для переводов. Все перечисленные сервисы получилось внедрить в один модуль Console-Translate, который можно установить в своей консоли с помощью одной команды:

Install-Module Console-Translate -Repository NuGet

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

Register-PSRepository -Name "NuGet" -SourceLocation "https://www.nuget.org/api/v2" -InstallationPolicy Trusted

Синтаксис простой, в первый параметр передается текст (если вы используете более одного слова, обязательно необходимо заключить весь передаваемый текст в кавычки), второй (через пробел) отвечает на язык назначения, например так:

> Get-Translate "Как дела?"
How are you?

> Get-Translate "Как дела?" de
Wie geht es Ihnen?

По умолчанию перевод происходит между Русским и Английским языком в обоих направлениях, с автоматически определением языка на уровне PowerShell. Т.к. на уровне API не всегда хорошо срабатывает определение языка, добавил достаточно простую реализацию, так как акцент сделан на двух языках, каждый раз происходит подсчет переданных букв с разбивкой (методом Char) на русские и английские символы, букв какого из языков окажется больше, тот и будет являться исходным языком, и соответственно второй будет являться языком назначения (пример на скриншоте ниже).

Перевод текста в консоли через PowerShell на Linux и Windows машинах

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

CrystalDiskInfo

У программы CrystalDiskInfo нет командного интерфейса для прямого взаимодействия через консоль, есть возможность только сформировать файловый отчет, где содержится много лишней информации в текстовом виде. Помимо этого отчета, программа так же хранит информацию в конфигурационных ini-файлах, которые обновляются в процессе сканирования или изменения настроек. Модуль CrystalDisk-Cli читает эти конфигурационные файлы и выводит результат в формате OSObject или Collection (необходимо, что бы программа CrystalDiskInfo уже была установлена). Вывод работы модуля будет выглядеть так:

Установить модуль CrystalDisk-Cli можно также одной командой:

> Install-Module CrystalDisk-Cli -Repository NuGet
> Import-Module CrystalDisk-Cli
> Get-DiskInfo

Name                    : WD PC SN740 SDDPNQD-1T00-10272243A5454811
Date                    : 2024/02/19 11:16:48
HealthStatus            : 1
Temperature             : 48
PowerOnHours            : 1010
PowerOnCount            : 448
Life                    : 100
HostWrites              : 10322
HostReads               : 10092
01                      : 0
02                      : 0
03                      : 0
04                      : 0
05                      : 0
ReallocatedSectorsCount : 0
06                      : 0
07                      : 0
08                      : 0
09                      : 0
0A                      : 0
0B                      : 0
0C                      : 0
0D                      : 0
0E                      : 0
0F                      : 0

Если необходимо обновить информацию и получить актуальный отчет, используется параметр Report (если консоль не запущена с правами администратора, при запуске появится окно, которое запросит подтверждение). Само приложение производит автоматическое обновление с заданным промежутком времени, которое можно изменить в настройках программы, например каждые 5 минут, используя команду: Get-DiskInfoSettings -AutoRefresh 5 (при запуске без параметров вернет текущие настройки, для изменения настроек понадобится запустить консоль с правами администратора). Вот пример вывода для нескольких дисков:

:/>  Нет списка сетей wifi на ноутбуке windows 10

Вывод работы модуля CrystalDisk-Cli

Everything

Install-Module PSEverything -Repository NuGet
Find-Everything ".temp" -ComputerName plex-01 -Port 9999 -User every -Password thing # удаленное получение данных
Find-Everything ".temp" # локальное получение данных
$(Find-Everything ".temp").Count # посчитать количество файлов, подходящих под критерии поиска

Поиск файлов через модуль PSEverything

Программа не содержит открытый исходный код, перед написанием модуля я ознакомился с правами лицензионного соглашения, которые крайне лояльны, и дают возможность интегрировать данное приложение для своих целей. Мне данный модуль очень мог автоматизировать поиск файлов для нескольких несложных скриптов, что было бы сложнее реализовать средствами PowerShell, не говоря про скорость работы, которая чаще не превышает 200мс (повышенная задержка при большом количестве найденных файлов вызвана не программой, а самим языком при обработке получаемых данных).

SpeedTest

У меня как-то была задача, реализовать мониторинг скорости интернета получаемую от провайдера на регулярной основе. Для примера, можно воспользоваться всеми известным Speedtest от Ookla, у данного сервиса уже присутствует cli-интерфейс, вывод которой можно распарсить, но это не единственный провайдер для предоставления подобный услуги и требует зависимость в виде исполнимого файла. В случае c встроенным Windows PowerShell версии 5.1 есть возможность использовать Internet Explorer через COM интерфейс, тем самым в браузере автоматизировать нажатие кнопок в фоновом режиме и забирать содержимое страницы прямо в консоль, для дальнейшей обработки и вывода в формате объекта, как это реализовано в модуле Ookla-SpeedTest-API. Вот пример:

Get-PackageProvider # проверяем, что провайдер пакетов nuget установлен
Find-PackageProvider # отобразить все допступные менеджеры пакетов
Install-PackageProvider nuget # установить менеджер пакетов nuget
Set-PackageSource nuget -Trusted # разрешаем установки пакетов из указанного источника
Find-Package Ookla-SpeedTest # ищем пакеты по названию во всех менеджерах
Install-Module Ookla-SpeedTest -Scope CurrentUser # установить модуль для текущего пользователя

### Запускаем модуль и забираем метрики
$test = Invoke-SpeedTest
$test | Select-Object date,download,upload

date                download upload
----                -------- ------
19.02.2024 14:00:15    37263  19320

Измерение скорости интернета через Ookla Speedtest в PowerShell 5.1

Используя такой модуль, можно настроить отправку метрик в базу данных и вывести данные на dashboard Grafana (такой пример с созданием службы есть на GitHub). Хотя данный подход уже является устаревшим, он не требует никаких зависимостей, но при этом не поддерживается в версии PowerShell Core. Для подобных целей правильнее использовать библиотеку Selenium (версии dotNET), например через браузер Chrome/Chromium, подробнее про установку зависимостей и создание модулей я уже писал пост на Habr. Вот пример вывода на примере OpenSpeedTest и LibreSpeedTest:

Измерение скорости интернета через Open и Libre Speedtest в PowerShell Core

Сервер и клиент Syslog

Маловероятно, что вам понадобится запустить сервер для сбора логов на системе Windows, при условии, что чаще для этих целей используют сервера на базе Linux, к тому же имеется достаточно большое количество отличных альтернатив, например Visual Syslog. Но если у вас есть запрет на запуск какого-либо стороннего программного обеспечения на системах Windows (что в моем случае и послужило причиной) или например PowerShell скрипт, события работы которого необходимо настроить для передачи серверу Syslog, данный процесс можно автоматизировать с помощью модуля pSyslog. Для установки и запуска серверной части используйте следующие команды:

Install-Module pSyslog -Scope CurrentUser
Start-pSyslog -Port 514
Get-pSyslog # читает входящие сообщения в реальном времени
Show-pSyslog # читает локальный файловый журнал

Для отправки сообщения на любой сервер Syslog, используйте команду Send-pSyslog:

Отправка сообщения на сервер Syslog

Серверная и клиентская часть базируются на классе .NET System.Net.Sockets, все источники документации и примеры работы есть в описании репозитория. Модуль поддерживает шифрование Base64, UDP Relay и ротацию локального журнала, который возможно настроить для получения метрик, например, по типу сообщения или содержимому. Протестировано в работе для версии Windows PowerShell на разных билдах до 3-х одновременных клиентов, также работает в версии Core.

Windows API

Модуль ps.win.api – это полноценный REST API и Web сервер на чистом PowerShell, серверная часть которого базируется на классе .NET HttpListener. Про то, как создать такой сервер я уже писал статью на Habr, с тех пор прошло не так много времени, тем не менее функционала стало больше, в том числе добавлен модуль, который позволяет запускать серверную часть в режиме фонового процесса и управлять им, а также он включает в себя большую часть используемых функций с возможностью удаленного взаимодействия с сервером для каждой команды, вывод которых будет одинаковый как для локальной, так и для удаленной машины. Все функции представляют из себя дополненный и более читаемый вывод уже встроенных WMI/CIM команд, результат которых можно получить с удаленный машины через данный модуль в PowerShell, или любой REST-клиент, например curl в Linux, без необходимости конфигурации WinRM или ssh.

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

Install-Module ps.win.api -Repository NuGet -AllowClobber
Import-Module ps.win.api
Start-WinAPI
Test-WinAPI

Port Status
---- ------
8443 Open

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

Get-Smart
Get-Smart -ComputerName 192.168.3.100 -User rest -Pass api -Port 8443

Пример вывода температуры датчиков на локальной и удаленной Windows машинах

Примеры работы и настройки можно найти в репозитории на GitHub. Также помимо запуска и остановки служб и процессов, добавлен функционал просмотра всех журналов событий Windows через Web-интерфейс с возможностью фильтрации вывода, пример для ssh подключений на скриншоте:

Get-Query

В системе Windows для просмотра в консоли списка текущих авторизованных пользователей, а также запущенных ими процессов присутствует встроенная программа query.exe, которая отдает вывод в текстовом формате. Модуль Get-Query преобразуя вывод команды в формат объекта, что позволяет использовать его для мониторинга активных пользовательских сессий, например, через активного Zabbix-агента, а также с помощью такого модуля (или любого другого подобного модуля в формате PSObject) можно заполнить таблицу DataGridView используемую в Windows Forms, данный подход я использовал в проекте RSA. Пример вывода для одного пользователя:

Install-Module Get-Query
Get-Query

User      : lifailon
Session   : console
ID        : 1
Status    : Active
IdleTime  : отсутствует
LogonTime : 12.02.2024 13:08

Итог

По мимо перечисленных модулей, присутствуют модули на мониторинга Veeam репозиториев и заданий, а так же датчиков температуры системы через Open и LibreHardwareMonitor, статью про последний я также писал на Habr, где упоминал про кастомизацию терминала, используя профили для oh-my-posh. Всего модулей в различных репозитория огромное множество, менеджер Nuget насчитывает больше 392 тысяч пакетов, 30 тысяч из которых составляют модули для PowerShell и библиотеки, которые могут быть интегрированы через платформу .NET. Использование удобных именно для вас модулей заставляет меньше покидать терминал, а времяпровождение в консоли приносит все больше удовольствия, и как мне кажется, формирует полезную привычку в дальнейшем.

:/>  Как изменить иконку приложения на Андроид без лаунчера Тарифкин.ру

Установка зависимостей

Для установки необходимых зависимостей:

  • для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) требуется подключение расширенного репозитория. Для установки достаточно подключить расширенный репозиторий (и установить пакет curl если он не был установлен ранее);
  • Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) должны быть подключены следующие диски:
  • Для Astra Linux Common Edition требуется наличие подключенного репозитория

Только для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  1. Загрузить пакеты (приведенные ниже ссылки актуальны на момент обновления статьи):

  2. Выполнить установку загруженных пактов:

    sudo apt install ./liblttng-ust-ctl2_*_amd64.deb ./liblttng-ust0_*_amd64.deb

Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) достаточно подключить расширенный репозиторий (и установить пакет curl если он не был установлен ранее).

Установка powershell из репозитория Microsoft

Чтобы упростить установку и обновление, PowerShell для Linux публикуется в репозиториях пакетов. Для установки из репозитория:

Импортировать ключи GPG публичного репозитория:

Добавить репозиторий пакетов:

Выполнить обновление списка пакетов:

sudo apt update

Установить пакет powershell:

sudo apt install -y powershell

Для установки без подключения репозитория:

Загрузить пакет

При необходимости перенести загруженный файл на целевую машину и и выполнить установку пакета из этого файла:

sudo dpkg -i powershell-lts_7.0.3-1.debian.9_amd64.deb


Проверка версии

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

Помогите программно создать сетевой диск насервере

Проверка и восстановление диска с помощью команды chkdsk

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

chkdsk E: /F /R

  • Выполнит проверку диска E:\
  • Исправит автоматически найденные ошиьки (/F)
  • Попытаться восстановить данные при обнаружении поврежденных секторов, она попытается восстановить информации (/R).

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

Если утилита chkdsk не обнаружила проблем на диске, появится сообщение:

Windows has scanned the file system and found no problems.
No further action is required.

chkdsk утилита проверки диска на ошибки в windows 10

Утилита chkdsk не позволяет выполнить online проверку системного диска (C:\). При запуске команды chkdsk C: /F /R появится уведомление:

Cannot lock current drive. Chkdsk cannot run because the volume is in use by another process.  Would you like to schedule this volume to be checked the next time the system restarts? (Y/N).
Невозможно выполнить команду Chkdsk, так как указанный том используется другим процессом. Следует ли выполнить проверку этого тома при следующей перезагрузке системы?

Чтобы запланировать проверку диска при следующей загрузке Windows, нажмите
Y
->
Enter
.

This volume will be checked the next time the system restarts
.

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

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

chkntfs /x c:

Чтобы отключить топ перед проверкой, добавьте атрибут /X в команде chkdsk. В этом случае Windows принудительно закрое все открытые файловые дескрипторы, отмонтирует диск и выполнит проверку на ошибки.

Если вам нужно выполнить проверку большого NTFS тома, но вы не хотите блокировать диск, можно сначала просканировать диск на ошибки:

chkdsk E: /f /offlinescanandfix

Утилита найдет ошибки и сохранит их в файл $corrupt для дальнейшего исправления

Чтобы исправить найденные ошибки, не тратя время на полное сканирование тома, выполните:

chkdsk D: /spotfix

Это существенно сократит время недоступности тома для пользователя при исправлении ошибок.

В консоли PowerShell для проверки диска можно использовать командлет Repair-Volume как аналог команды chkdsk:

Repair-Volume -driveletter C -scan

Также рекомендуем перед проверкой проверить SMART состояние жестких дисков с помощью встроенных PowerShell командлетов из модуля управления дисками:

powershell: команда получения данных smart о здоровье диска

Просмотр результатов проверки Chkdsk в Windows

Chkdsk при онлайн сканировании диска выводит результаты прямо в консоль. Если вы запланировали проверку диска при загрузке Windows, то результаты можно получить только из журнала событий Windows (Event Viewer).

  1. Откройте консоль Event Viewer (
    Eventvwr.msc
    ) и перейдите в раздел Windows Logs -> Application;
  2. Щелкните правой клавишей по разделы Application и выберите Filter Current Log. В поле Event Source выберите Chkdsk и Wininit и нажмите ОК;Логи chkdsk хранятся в Event Viewer
  3. Подробные результаты проверки диска содержатся в описании события. Обратите внимание, что у онлайн событий проверки диска будет указан источник Chkdsk. Если выполнялась офлайн проверка диска при загрузке Windows, у такого события будет источник Wininit и EventID 1001.Открыть детальный лог chkdsk в Windows

Можно получить лог проверки диска с помощью PowerShell командлета Get-WinEvent. Например, чтобы выгрузить результаты последних 5 проверок диска в текстовый файл CHKDSK_SCAN.txt на рабочем столе, выполните команду:

Открыть полученный файл с логом chkdsk:

Выгрузить логи chkdsk в текстовый файл

Если размер лога Chkdks очень большой, журнал событий может обрезать его. В этом случае можно открыть полный лог проверки диск в System Volume Information. Чтобы получить доступ к этой папке, нужно запустить командную строку от имени SYSTEM (проще всего с помощью утилиты psexec):

.\PsExec.exe -i -s cmd.exe

После этого можно открыть лог chkdsk:

notepad.exe "c:\System Volume Information\Chkdsk\Chkdsk20231129072214.log"

Лог ckdsk в system volume information

Оставьте комментарий