суббота, 1 августа 2026 г.

Powershell, 7.6.4, $pwshPath

Powershell

Powershell, 7.6.4, $pwshPath

PS D:\> $pwshPath = (Get-Command pwsh).Source

$pwshPath - Место, где лежит

"C:\Program Files\WindowsApps\Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe\pwsh.exe"

вторник, 28 июля 2026 г.

Pwch, Powershell, Bypass, ExecutionPolicy

Pwch, Powershell, Bypass, ExecutionPolicy

PowerShell 7.6.4

-----------------------------------------------------------------------------

D:\Projects\VS02\2606\FlacToMp3\Giga\FlacToMp3_02\Version2\SetExePolicy_01.ps1

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Get-ExecutionPolicy
Get-ExecutionPolicy -List


--------------------------------------------------------------------------

PS D:\Projects\VS02\2606\FlacToMp3\Giga\FlacToMp3_02\Version2> .\SetExePolicy_01.ps1

Bypass

Scope ExecutionPolicy

----- ---------------

MachinePolicy       Undefined

   UserPolicy       Undefined

      Process          Bypass

  CurrentUser       Undefined

 LocalMachine    RemoteSigned

--------------------------------------------------------------------

PS C:\Users\Administrator> dotnet --version

10.0.302

PS C:\Users\Administrator> $env:ASPNETCORE_ENVIRONMENT

PS C:\Users\Administrator> Test-Path ".\logs" -PathType Container

False

PS C:\Users\Administrator> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

PS C:\Users\Administrator> Get-ExecutionPolicy

Bypass

PS C:\Users\Administrator> Get-ExecutionPolicy -List


        Scope ExecutionPolicy

        ----- ---------------

MachinePolicy       Undefined

   UserPolicy       Undefined

      Process          Bypass

  CurrentUser       Undefined

 LocalMachine    RemoteSigned


PS C:\Users\Administrator> $PSExecutionPolicyPreference

PS C:\Users\Administrator> .\test.ps1

.\test.ps1: The term '.\test.ps1' is not recognized as a name of a cmdlet, function, script file, or executable program.

Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

PS C:\Users\Administrator> .\test-bypass_.ps1

.\test-bypass_.ps1: The term '.\test-bypass_.ps1' is not recognized as a name of a cmdlet, function, script file, or executable program.

Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

PS C:\Users\Administrator> .\test_bypass_.ps1

Скрипт выполнился! ExecutionPolicy = Bypass

PS C:\Users\Administrator> $PSHOME

C:\Program Files\WindowsApps\Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe

PS C:\Users\Administrator> Test-Path "C:\Program Files\PowerShell\7\pwsh.exe"

False

PS C:\Users\Administrator> Test-Path "C:\Program Files\test_bypass_.ps1"

False

PS C:\Users\Administrator>

пятница, 24 июля 2026 г.

Powershell, Where

Powershell, Where

Ага, теперь всё сходится: у тебя PowerShell установлен через Microsoft Store (на это указывает путь в C:\Program Files\WindowsApps\...). Поэтому стандартный путь C:\Program Files\PowerShell\7\ не срабатывает — отсюда и False от Test-Path.

Что это значит для практики

  • Путь к исполняемому файлу:
    C:\Program Files\WindowsApps\Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe\pwsh.exe
  • Корень установки ($PSHOME):
    тот же каталог — C:\Program Files\WindowsApps\Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe

Нюансы, которые важно учитывать (особенно для серверной автоматизации и BackgroundService)

  1. Папка WindowsApps — системная и защищена ACL. Обычные пользователи (и многие службы) не имеют туда доступа на чтение/выполнение по умолчанию. Это может стать проблемой, если ты, например, запускаешь скрипт из BackgroundService или CI/CD под ограниченной учёткой.
  2. Путь не статичен. В имени папки зашита версия (7.6.4.0) и хэш (8wekyb3d8bbwe). При обновлении PowerShell путь изменится — скрипты, которые жёстко прописывают путь, сломаются.
  3. Переменная PATH может быть настроена так, что pwsh находится, но прямого доступа к папке нет. Команда Get-Command pwsh работает, потому что ищет по PATH, а не по фиксированному пути.

Как надёжно находить pwsh в скриптах и сервисах

Учитывая твой контекст (автоматизация, BackgroundService, обработка ошибок и т. д.), лучше не хардкодить путь, а использовать один из этих подходов:

Вариант 1 (самый простой и надёжный)

powershell
$pwshPath = (Get-Command pwsh).Source

Это сработает, если pwsh добавлен в PATH (в Store‑версии обычно так и есть).

Вариант 2 (если нужно убедиться, что это именно pwsh.exe, а не алиас)

powershell

$pwshPath = (Get-Command pwsh -CommandType Application).Source

Вариант 3 (для сценариев, где PATH может быть ограничен)

Можно искать pwsh.exe в типичных местах и брать первый найденный:

powershell


$paths = @(
    "C:\Program Files\PowerShell\7\pwsh.exe",
    "C:\Program Files (x86)\PowerShell\7\pwsh.exe"
)
$pwshPath = $paths | Where-Object { Test-Path $_ } | Select-Object -First 1

if (-not $pwshPath) {
    # fallback: ищем через Get-Command
    $pwshPath = (Get-Command pwsh).Source
}

Если ты, например, хочешь вызывать pwsh из C#‑кода (в том числе в рамках твоего Publisher‑Subscriber сервиса или BackgroundService), лучше всего использовать Вариант 1 и передавать путь в ProcessStartInfo.FileName. Так ты не будешь зависеть от конкретной структуры папок и версии.

Если скажешь, в каком именно сценарии тебе нужен путь (например, запуск из C#, скрипт деплоя, проверка версии в CI/CD), подскажу готовый фрагмент кода под эту задачу. 😊

PowerShell, Where


PowerShell, Where ?

-------------------------------------------------

PS C:\Users\Administrator> pwsh

PowerShell 7.6.4

PS C:\Users\Administrator> (Get-Command pwsh).Source

C:\Program Files\WindowsApps\Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe\pwsh.exe

PS C:\Users\Administrator> $PSHOME

C:\Program Files\WindowsApps\Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe

PS C:\Users\Administrator> Test-Path "C:\Program Files\PowerShell\7\pwsh.exe"

False

PS C:\Users\Administrator>

PowerShell, Folder

PowerShell, Folder

https://aka.ms/PSWindows

В Windows Server PowerShell 7+ (pwsh) по умолчанию устанавливается в:

  • 64‑битная версия: C:\Program Files\PowerShell\7\
  • 32‑битная версия (если отдельно ставили): C:\Program Files (x86)\PowerShell\7\

В этой папке лежит сам исполняемый файл pwsh.exe, а также остальные компоненты. Если скажешь, какая у тебя версия ОС или разрядность — могу подсказать точнее. 😊

Powershell

Powershell, 7.6.4

https://apps.microsoft.com/detail/9mz1snwt0n5d?hl=ru-RU&gl=RU

среда, 14 января 2026 г.

FirtstDate, Launch, Start, Begin, DateTime, WinServer

FirtstDate, Launch, Start, Begin, DateTime, WinServer

(systeminfo | Select-String "Дата установки ОС|Original Install Date") -replace ".*: ",""

(Get-CimInstance Win32_OperatingSystem).InstallDate

systeminfo | findstr /I "Install"

eventvwr.msc