Задать вопрос
Ответы пользователя по тегу Windows
  • Можно ли установить следующую переменную из PowerShell?

    @MaxKozlov Куратор тега PowerShell
    Судя по всему так
    [Windows.Graphics.Capture.GraphicsCaptureSession, Windows.Graphics.Capture, ContentType=WindowsRuntime] | Out-Null
    [Windows.Graphics.Capture.GraphicsCaptureSession]::IsBorderRequired = $true

    Но проверить не могу, не тот билд винды :)

    по мотивам
    https://stackoverflow.com/questions/45086059/how-c...
    Ответ написан
  • Почему при гибернации необходимо держать блок питания включенным?

    @MaxKozlov
    принудительную гибернацию можно сделать с помощью команды shutdown -h -f
    А S3 попытаться выключить в биосе. Может быть тогда и из- gui заработает
    Ответ написан
    Комментировать
  • Как получить список папок отсортированный по количеству файлов?

    @MaxKozlov
    Опять же Powershell:
    $folders = Get-ChildItem -Path C:\  -Directory -Recurse | ForEach-Object {
      [PSCustomObject]@{
        Path=$_.FullName
        Count=$_.FullName | Get-ChildItem -File | Measure-Object | Select-Object -ExpandProperty Count
      }
    } | Sort-Object Count -Descending
    # Посмотреть потом первый десяток:
    $folders | Select -First 10

    Можно, кстати, объединить с другим вопросом, но, скорее всего будут дубли из-за повторных обращений к одной и той же папке, проверять лень :)

    Но всё это крайне медленно.
    Если же просто оценить что-как, лучше взять WizTree https://diskanalyzer.com/
    Ответ написан
  • Как найти папки, у которых нет доступа администратора?

    @MaxKozlov
    Если вам надо просто получить список таких папок, куда админу нельзя, то на Powershell
    $Error.Clear()
    Get-ChildItem C:\ -Recurse -ErrorAction Continue | Out-Null
    $err = $Error | ForEach-Object { $_.TargetObject }
    После этого в переменной $err будет список папок, на которые выдавались ошибки.
    Записать их в файлик
    $err | Set-Content -Path d:\Path_without_access.txt -Encoding UTF8

    Дальше, уже из под Elevated Shell можно через Get-ACL получать на них AccessList и как-то что-то делать
    Ответ написан
    2 комментария
  • Как изменить принт-сервер у сетевого принтера?

    @MaxKozlov Куратор тега PowerShell
    помимо Get-Printer, есть Set-Printer и много что ещё
    PS> Get-Command -Module PrintManagement
    Add-Printer
    Add-PrinterDriver
    Add-PrinterPort
    Get-PrintConfiguration
    Get-Printer
    Get-PrinterDriver
    Get-PrinterPort
    Get-PrinterProperty
    Get-PrintJob
    Read-PrinterNfcTag
    Remove-Printer
    Remove-PrinterDriver
    Remove-PrinterPort
    Remove-PrintJob
    Rename-Printer
    Restart-PrintJob
    Resume-PrintJob
    Set-PrintConfiguration
    Set-Printer
    Set-PrinterProperty
    Suspend-PrintJob
    Write-PrinterNfcTag
    Ответ написан
    Комментировать
  • Как можно управлять службами и брандмауэром в Windows 7 на Python?

    @MaxKozlov Куратор тега PowerShell
    https://codereview.stackexchange.com/questions/211...

    а New-NetFirewallRule на win7 не было ещё
    сервисы же настраивать через sc
    Ответ написан
    6 комментариев
  • Как программой установить Автоматический режим на службу Windows?

    @MaxKozlov Куратор тега PowerShell
    Если я вас правильно понял, то через powershell можно указать тип запуска для сервиса примерно так
    Get-Service openvpn | Set-Service -StartupType Automatic

    как там точно сервис openvpn называется я не помню, так что подкрутите

    ну и сам powershell скрипт можно запускать типа
    powershell -file filename.ps1
    а в filename.ps1 уже писать все нужные команды
    Ответ написан
    Комментировать
  • Как хранить и управлять большим количеством скриптов под разные задачи?

    @MaxKozlov Куратор тега PowerShell
    Не очень понятно, каковы ваши цели.

    Если вам просто хранить и иметь историю - git и т.п.

    Если раскладывать на разные машины - то тут надо понимать в каком составе и зачем.
    Разбить по назначению по модулям и модули целиком обновлять или поштучно команды раскладывать.
    Если запускать вручную или из шедулера - можно через GP раскладывать. или тупо Copy-Item, ничуть не хуже ансибла получится.

    Опять же вопрос - кто будет запускать ? если только вы - самое простое иметь один репозиторий где-то в сети, а на нужных компах просто папочку Documents\WindowsPowershell создать как reparse point с этого сетевого репозитория.

    Старт PS, конечно, будет долгим, зато везде где надо всегда будет сама свежая версия.

    Документация, конечно, внутри самих файлов, Если правильно всё описано - Get-Help выдаст её в лучшем виде. Ну и именование команд по стандарту Verb-PrefixNoun
    Ответ написан
    Комментировать
  • Почему Nuget автоматически устанавливается из ненадежного репозитория?

    @MaxKozlov Куратор тега PowerShell
    Просто все репозитории, даже дефолтный PSGallery, по умолчанию не надёжные.
    Сделайте его надёжным, чтобы лишних вопросов не возникало.

    Посмотреть инфу о нём, в том числе URL
    Get-PSRepository
    Сделать надёжным
    Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

    Кстати, PackageManagement и PowerShellGet тоже лучше обновить.
    Ответ написан
    Комментировать
  • Коммандный UAC?

    @MaxKozlov
    Смешались в кучу кони, люди....
    Так у вас нет GUI (core edition) или вы логинитесь на машину удалённо через SSH ?
    это кардинально разные истории.

    UAC - он только для интерактивных и ремотных недоменных сессий.

    https://docs.microsoft.com/en-us/troubleshoot/wind...

    То есть если вы в домене, админ компа и логинитесь удалённо - на вас UAC не действует.
    Если без домена - действует и в этом случае по ссылке написано как это отключить.

    Судя по тому что вы не хотите давать права админа некоему челу - доступ у вас есть, делайте сами удалённо :)
    Если же надо что-то этакое запустить от админа, но в локальной сессии - task scheduler.

    И только если надо непременно что-то интерактивно, локально, от админа, но кем-то другим - права локального админа на время работы.

    Кстати, при логине через ssh на винду по-моему даже недоменному админу LocalAccountTokenFilterPolicy не нужен
    Ответ написан
    3 комментария
  • Как написать скрипт добавления маршрута VPN?

    @MaxKozlov
    метрика в том же файлике
    IpInterfaceMetric=0
    меняете о на нужную

    С маршрутизацией непонятно, так как непонятно какие у вас сети и какие нужны маршруты.
    Но если вы не будете использовать диапазон 192..168 для своих сетей, с маршрутизацией всё будет работать само.

    У винды, как ни странно, для VPN классовая маршрутизация. то есть маршрут сам добавляется для 192.168.xxx.0/24
    а если будете использовать, например, 10.хxx.yyy.0, то маршрут 10.0.0.0/8 будет добавляться сам
    Ответ написан
    Комментировать
  • Как найти и вывести повторяющиеся строки в текстовом файле?

    @MaxKozlov Куратор тега PowerShell
    Похоже, вам поможет нечто типа того (почти на c#):
    $c = [string[]](Get-Content .\0.txt)
    $sk1 = [System.Collections.Generic.HashSet[string]]::new($c)
    $c = [string[]](Get-Content .\1.txt)
    $sk2 = [System.Collections.Generic.HashSet[string]]::new($c)
    $sk1.IntersectWith($sk2)
    $sk1

    на ваших данных выдало то что надо (правда, не сортированное в том же порядке)
    Ну и по памяти - всё в память грузится
    Ответ написан
    Комментировать
  • Как заполнить поле Division, опираясь на SAMAccountName из списка?

    @MaxKozlov Куратор тега PowerShell
    Циклы обработки объектов в ps бывают двух основных видов:
    #классический цикл
    foreach ($obj in $list) {
      # сделать что-нибудь с переменной $obj
       Set-something -name $obj.name -value $obj.value
    }
    
    #цикл с использованием  pipeline
    $list | foreach-object {
      # сделать что-нибудь с переменной $_
       Set-something -name $_.name -value $_.value
    }

    Выбирайте что вам нравится и подставляйте свои команды установки
    В сочетании с импортом из csv второй вариант будет короче
    Ответ написан
    Комментировать
  • Как разделить CSV файл на два по количеству элементов в строке?

    @MaxKozlov Куратор тега PowerShell
    Типа того
    $data=Import-csv src
    $data | where-object { $_.Group -match ',' } | export-csv dstg2
    $data | where-object { $_.Group -notmatch ','  } | export-csv dstg1

    Пути, разделители, кодировка - свои
    Ответ написан
    Комментировать
  • SSH + PowerShell, как запустить команду с повышенными привилегиями?

    @MaxKozlov Куратор тега PowerShell
    Проверить и сравнить права можно через whoami /all
    скорее всего там будет очень похоже

    Если комп не в домене, то можно посмотреть на
    LocalAccountTokenFilterPolicy

    https://winintro.ru/windowspowershell2corehelp.en/...
    Set the value of the LocalAccountTokenFilterPolicy registry entry to 1.

    For example, the following command uses the New-ItemProperty cmdlet and the Windows PowerShell Registry Provider to create the LocalAccountTokenFilterPolicy registry entry on the local computer and set its value to 1.

    new-itemproperty -name LocalAccountTokenFilterPolicy -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -propertyType DWord -value 1

    winrm quickconfig его ставит. если комп не в домене. Таким образом, ремотная сессия получает права админа без uac.

    А сервис ssh установленный по дефолту вполне достаточен для выполнения с админскими правами.

    Разве что некоторые вещи можно ставить только в интерактивной сессии. Тот же ssh-server ставится только интерактивно. Или локаль
    Ответ написан
    Комментировать
  • Как вывести в командной строке имя запущенного batch-файла, содержащего PowerShell-скрипт?

    @MaxKozlov Куратор тега PowerShell
    Ваша ошибка в том, что код "echo %~nx0 completed!" выполняет powershell, который не знает что такое %~nx0 (echo - алиас для write-output)
    Так что или как предложил сергей кузьмин
    или такая правка
    @echo off
    @powershell.exe -ExecutionPolicy Bypass -Command "$fn = \"%~f0\"; $_=((Get-Content $fn) -join \"`n\");iex $_.Substring($_.IndexOf(\"goto :\"+\"EOF\")+9)"
    @goto :EOF
    Start-Process microsoft-edge:https://yoomoney.ru/moneylandia/lootboxes
    Start-Sleep 5
    Get-Process -Name "*msedge*" | Stop-Process
    echo "$fn completed!"
    pause
    Ответ написан
    2 комментария
  • Как найти сетевые или расшаренные принтеры windows?

    @MaxKozlov
    Просканировать сеть в поисках открытого 9100 порта (raw) - будут сетевые принтеры.

    Расшаренные видны если опрашивать компы через wmi - класс Win32_share
    Ну и они скорее всего тоже могут держать открытым 9100 порт
    Ответ написан
    Комментировать
  • OpenSSH в Windows 10. По какой причине доступ запрещен?

    @MaxKozlov
    Добрался до компа, напишу уж тут :)
    В логах сервера видно что за проблема - не те права у того самого файлика, что я упоминал в комментарии
    debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.
    Authentication refused.

    При подключении к OpenSSH-серверу, установленному, на win и использовании аутентификации по ключу, необходимо обращать внимание на два момента:
    1. Если пользователь админ - его публичный ключ должен быть указан в C:\ProgramData\ssh\administrators_authorized_keys
    2. Убедиться что владелец файлов *authorized_keys правильный: системных - система, юзерских - юзер, и без лишних доступов.
    Например, установить права для системного можно скопировав их с другого файла:
    $acl = Get-Acl C:\ProgramData\ssh\ssh_host_dsa_key.pub
    Set-Acl -Path C:\ProgramData\ssh\administrators_authorized_keys -Acl $acl

    Ещё в комплекте c GitHub идут специальные скрипты для тех же целей:
    FixHostFilePermissions.ps1
    FixUserFilePermissions.ps1

    Они что-то ещё в реестре вроде бы правят

    Вариант обхода настроек для этого файла -закомментировать в конфигах его упоминание:
    Match Group administrators
           AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
    Но это не рекомендуется

    Ну, и, как замечено в комментариях, необходимо убедиться в правильной кодировке файла
    https://github.com/PowerShell/Win32-OpenSSH/issues...
    Если коротко, то оказалось что кодировкой *authorized_keys по дефолту является UCS-2 LE BOM, вместо ожидаемого UTF-8. После смены кодировки все заработало так как надо.

    Мои лично файлы все в ASCII
    Ответ написан
    4 комментария
  • Устанавливать обновления днём, перезагружаться только вечером - как?

    @MaxKozlov
    Вот ещё что нашёл
    https://isazonov.wordpress.com/2020/04/24/usoclien...

    UsoClient StartInstall

    Если для feature update сработает, будет замечательно

    Ещё можно поискать в коде 1.6.1.1 эти две строки
    и добавить к ним третью, похоже, это главное что отличает старую и новую версии.
    $objInstaller = $objSession.CreateUpdateInstaller()
    $objInstaller.Updates = $objCollectionTmp
    
    $objInstaller.IsForced = $true
    Ответ написан
    4 комментария