about_PowerShell_exe
Объясняет, как использовать интерфейс командной powershell.exe строки. Отображает параметры командной строки и описывает синтаксис.
Подробное описание
Сведения о параметрах командной строки для PowerShell 7 см. в about_Pwsh .
SYNTAX
PowerShell[.exe] [-PSConsoleFile | -Version ] [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive] [-InputFormat ] [-OutputFormat ] [-WindowStyle ] [-EncodedArguments ] [-EncodedCommand ] [-ConfigurationName ] [-File - | ] [-ExecutionPolicy ] [-Command - | < [-args ] > | < [] > ] PowerShell[.exe] -Help | -? | /?
Параметры
-Command
Выполняет указанные команды (и все параметры), как будто они были вводимы в командной строке PowerShell, а затем завершает работу, если NoExit параметр не указан.
Значение команды может быть — , блок скрипта или строка. Если значение команды равно — , текст команды считывается из стандартных входных данных.
Параметр Command принимает только блок скрипта для выполнения, если он может распознать значение, переданное команде в качестве типа ScriptBlock . Это возможно только при запуске powershell.exe из другого узла PowerShell. Тип ScriptBlock может содержаться в существующей переменной, возвращаемой из выражения, или анализироваться узлом PowerShell как блок литерального скрипта, заключенный в фигурные скобки ( <> ), перед передачей в powershell.exe .
powershell -Command
В cmd.exe ней отсутствует такая вещь, как блок скрипта (или тип ScriptBlock), поэтому значение, переданное команде, всегда будет строкой. Вы можете написать блок сценария в строке, но вместо выполнения его поведение будет таким, как если бы вы набирали его в типичном приглашении PowerShell, возвращая содержимое блока сценария обратно.
Строка, передаваемая команде , по-прежнему выполняется как код PowerShell, поэтому блок скрипта фигурные скобки часто не требуются в первую очередь при запуске из cmd.exe . Для выполнения встроенного блока сценария, определенного внутри строки, можно использовать оператор вызова & .
powershell.exe -Command "& "
Если значение команды является строкой, команда должна быть последним параметром pwsh, так как все аргументы после него интерпретируются как часть выполняемой команды.
При вызове из существующего сеанса PowerShell результаты возвращаются в родительскую оболочку как десериализированные XML-объекты, а не динамические объекты. Для других оболочки результаты возвращаются в виде строк.
Если значение команды равно — , текст команды считывается из стандартных входных данных. При использовании параметра command с стандартными входными данными необходимо перенаправить стандартные входные данные. Например:
@' "in" "hi" | % < "$_ there" >"out" '@ | powershell -NoProfile -Command -
В примере получается следующий вывод.
in hi there out
Код выхода процесса определяется состоянием последней (выполненной) команды в блоке скрипта. Код выхода находится 0 в том случае, если $? это $true или 1 когда $? есть $false . Если последняя команда является внешней программой или скриптом PowerShell, который явно задает код выхода, отличный 0 от или 1 , этот код выхода преобразуется в 1 код выхода процесса. Чтобы сохранить конкретный код выхода, добавьте exit $LASTEXITCODE в командную строку или блок скрипта.
Дополнительные сведения см $LASTEXITCODE . в about_Automatic_Variables.
Аналогичным образом, значение 1 возвращается при ошибке завершения скрипта (завершающегося пространством выполнения), например или throw -ErrorAction Stop при прерывании выполнения с помощью CTRL+ C .
-ConfigurationName
Указывает конечную точку конфигурации, в которой выполняется PowerShell. Это может быть любая конечная точка, зарегистрированная на локальном компьютере, включая конечные точки удаленного взаимодействия PowerShell по умолчанию или пользовательскую конечную точку с определенными возможностями роли пользователя.
-EncodedArguments Base64EncodedArguments <>
Принимает аргументы строковых команд в кодировке Base64. Используйте этот параметр для отправки аргументов, требующих сложного вложенного кавыка. Представление Base64 должно быть строкой в кодировке UTF-16LE.
-EncodedCommand Base64EncodedCommand <>
Принимает строковую версию команды в кодировке Base 64. Используйте этот параметр для отправки в PowerShell команд, требующих сложных кавычек или фигурных скобок. Строка должна быть отформатирована с помощью кодировки символов UTF-16LE.
-ExecutionPolicy ExecutionPolicy <>
Задает политику выполнения по умолчанию для текущего сеанса и сохраняет ее в переменной $env:PSExecutionPolicyPreference среды. Этот параметр не изменяет политику выполнения PowerShell, установленную в реестре. Дополнительные сведения о политиках выполнения PowerShell, включая список допустимых значений, см. в статье about_Execution_Policies.
-File — |
Если значение файла равно — , текст команды считывается из стандартных входных данных. Выполнение powershell -File — без перенаправленных стандартных входных данных запускает обычный сеанс. Это то же самое, что и не указание параметра File вообще.
Если значение filepath является файлом, скрипт запускается в локальной область («dot-sourced») нового сеанса, чтобы функции и переменные, создаваемые скриптом, были доступны в этом новом сеансе. Введите путь к файлу скрипта и все параметры. File должен быть последним параметром в команде. Все значения, типизированные после параметра File , интерпретируются как файловый путь скрипта и параметры, передаваемые в этот скрипт.
Передаваемые в скрипт параметры имеют вид строк литералов (после интерпретации текущей оболочкой). Например, если вы находитесь в cmd.exe и хотите передать значение переменной среды, используйте синтаксис cmd.exe : powershell.exe -File .\test.ps1 -TestParam %windir%
В отличие от этого, выполнение powershell.exe -File .\test.ps1 -TestParam $env:windir в cmd.exe приводит к получению скрипта литеральной строки $env:windir , так как оно не имеет особого значения для текущей оболочки cmd.exe . Стиль $env:windir ссылки на переменную среды можно использовать внутри параметра Command , так как он будет интерпретирован как код PowerShell.
Аналогичным образом, если вы хотите выполнить ту же команду из скрипта пакетной службы, вы будете использовать %~dp0 вместо .\ него или $PSScriptRoot представить текущий каталог выполнения: powershell.exe -File %~dp0test.ps1 -TestParam %windir% Если вы вместо этого использовали .\test.ps1 , PowerShell вызовет ошибку, так как не удается найти литеральный путь .\test.ps1
Если значение filepath является файлом, файлдолжен быть последним параметром команды, так как все символы, типизированные после имени параметра файла файла, интерпретируются как путь к файлу скрипта, за которым следуют параметры скрипта.
Параметры и значения скрипта можно включить в значение параметра File . Например: -File .\Get-Script.ps1 -Domain Central
Обычно параметры-переключатели сценария включаются или опускаются. Например, следующая команда использует параметр All файла скрипта Get-Script.ps1 : -File .\Get-Script.ps1 -All
В редких случаях может потребоваться указать логическое значение для параметра. Невозможно передать явное логическое значение для параметра switch при выполнении скрипта таким образом. Это ограничение было удалено в PowerShell 6 ( pwsh.exe ).
Параметр File не может поддерживать скрипты с помощью параметра, который ожидает массив значений аргументов. К сожалению, это ограничение того, как собственная команда получает значения аргументов. При вызове собственного исполняемого файла (например powershell , или pwsh ) он не знает, что делать с массивом, поэтому он передается в виде строки.
Когда файл скрипта завершается с exit помощью команды, код выхода процесса задается числовым аргументом, используемым с командой exit . При обычном завершении код выхода всегда 0 .
Дополнительные сведения см $LASTEXITCODE . в about_Automatic_Variables.
-InputFormat
Описывает формат данных, отправляемых в PowerShell. Допустимые значения: Text (текстовые строки) или XML (сериализованный формат CLIXML).
-Mta
Запускает PowerShell с использованием многопотокового подразделения. Этот параметр впервые появился в PowerShell 3.0. В PowerShell 2.0 по умолчанию используется многопотоковое подразделение (MTA). В PowerShell 3.0 по умолчанию используется однопотоковое подразделение (STA).
-NoExit
Не завершает работу после выполнения команд запуска.
-NonInteractive
Этот параметр используется для создания сеансов, которые не должны требовать ввода пользователем. Это полезно для сценариев, выполняемых в запланированных задачах или конвейерах CI/CD. Любые попытки использовать интерактивные функции, такие как Read-Host или запросы подтверждения, приводят к прекращению ошибок инструкции, а не зависания.
-NoLogo
Скрывает баннер авторских прав при запуске программы.
-NoProfile
Не загружает профиль PowerShell.
-OutputFormat
Определяет формат выходных данных PowerShell. Допустимые значения: Text (текстовые строки) или XML (сериализованный формат CLIXML).
-PSConsoleFile
Загружает указанный файл консоли PowerShell. Введите путь и имя файла консоли. Для создания файла консоли используйте командлет Export-Console в PowerShell.
-Sta
Запускает PowerShell с использованием многопотокового подразделения. В Windows PowerShell 2.0 по умолчанию используется многопотоковое подразделение (MTA). В Windows PowerShell 3.0 по умолчанию используется однопотоковое подразделение (STA).
-Версия PowerShell версии <>
Запускает заданную версию PowerShell. Допустимые значения: 2.0 и 3.0. Указанная версия должна быть установлена в системе. Если Windows PowerShell 3.0 установлен на компьютере, версия по умолчанию — 3.0. В противном случае версия 2.0 — это версия по умолчанию. Дополнительную информацию см. в разделе Установка PowerShell.
-Стиль окна WindowStyle <>
Задает стиль окна для сеанса. Допустимые значения: Normal , Minimized , Maximized и Hidden .
-Help, -?, /?
Отображает справку. PowerShell.exe Если вы вводите PowerShell.exe команду в сеансе PowerShell, добавьте параметры команды с дефисом ( — ), а не косой чертой ( / ). Вы можете использовать дефис или косую черту. cmd.exe
ПРИМЕЧАНИЯ
Примечание по устранению неполадок. В PowerShell 2.0 запуск некоторых программ из консоли PowerShell завершается сбоем с помощью LastExitCode 0xc0000142.
Примеры
# Create a new PowerShell session and load a saved console file PowerShell -PSConsoleFile sqlsnapin.psc1 # Create a new PowerShell V2 session with text input, XML output, and no logo PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML # Execute a PowerShell Command in a session PowerShell -Command "Get-EventLog -LogName security" # Run a script block in a session PowerShell -Command # An alternate way to run a command in a new session PowerShell -Command "& " # To use the -EncodedCommand parameter: $command = "dir 'c:\program files' " $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -encodedCommand $encodedCommand
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
This repository has been archived by the owner on Oct 29, 2021. It is now read-only.
Unexpected Write into C:\Microsoft\Windows\PowerShell\StartupProfileData-NonInteractive #143
claudiospizzi opened this issue Mar 12, 2020 · 2 comments
Unexpected Write into C:\Microsoft\Windows\PowerShell\StartupProfileData-NonInteractive #143
claudiospizzi opened this issue Mar 12, 2020 · 2 comments
bug Something isn’t working
Comments
claudiospizzi commented Mar 12, 2020
Describe the Issue
I’m not sure why, but Universal Automation hosted in IIS tries to write into the C:\ root to write some startup profile data. In my case, the IIS user doesn’t have the permissions to write into that folder:
- C:\Microsoft\Windows\PowerShell\StartupProfileData-NonInteractive
To Reproduce
$uaServerSplat = @ < ConnectionString = 'C:\PathToDatabase.db' RepositoryPath = 'C:\PathToRepo' GitRemote = 'https://repourl' GitRemoteCredential = $cred InProcess = $true >Start-UAServer @uaServerSplat
Expected behavior
Not sure where this comes from. Would be great if this is redirected either to the users app data or the global C:\ProgramData .
Screenshots

Version Information
- Host Operating System: WS2019
- Host PowerShell Version: 5.1
- Universal Automation Version: 1.0.1
- Universal Dashboard Version:2.9.0
- UD Hosting Method: IIS
The text was updated successfully, but these errors were encountered:
8EBA227C515B8B06F1D118E2A3A0EACA0723A93B861EBF2BA9805B4BC6A757A6
384:gOQsmws3xnWAQzWhJiBN2jKbj8z3/dwXWGJ2o/ioFhZHSQV/gVifsR8piY6isyEE:MhBN/Ji/tjU/dAWGIaioFX7/ufeV6hyP
ANY.RUN is an interactive service which provides full access to the guest system. Information in this report could be distorted by user actions and is provided for user acknowledgement as it is. ANY.RUN does not guarantee maliciousness or safety of the content.
Software environment set and analysis options
Launch configuration
Task duration: 180 seconds Heavy Evasion option: off Network geolocation: off Additional time used: 120 seconds MITM proxy: off Privacy: Public submission Fakenet option: off Route via Tor: off Autoconfirmation of UAC: off Network: on
Software preset
- Internet Explorer 11.431.16299.0 KB4103768
- Adobe Acrobat Reader DC MUI (15.007.20033)
- CCleaner (5.35)
- FileZilla Client 3.31.0 (3.31.0)
- Google Chrome (73.0.3683.86)
- Google Update Helper (1.3.33.23)
- Java 8 Update 92 (64-bit) (8.0.920.14)
- Java Auto Updater (2.8.92.14)
- Microsoft Office Professional 2019 — de-de (16.0.12026.20264)
- Microsoft Office Professional 2019 — en-us (16.0.12026.20264)
- Microsoft Office Professional 2019 — es-es (16.0.12026.20264)
- Microsoft Office Professional 2019 — it-it (16.0.12026.20264)
- Microsoft Office Professional 2019 — ja-jp (16.0.12026.20264)
- Microsoft Office Professional 2019 — ko-kr (16.0.12026.20264)
- Microsoft Office Professional 2019 — pt-br (16.0.12026.20264)
- Microsoft Office Professional 2019 — tr-tr (16.0.12026.20264)
- Microsoft Office Professionnel 2019 — fr-fr (16.0.12026.20264)
- Microsoft Office профессиональный 2019 — ru-ru (16.0.12026.20264)
- Microsoft Visual C++ 2017 Redistributable (x64) — 14.11.25325 (14.11.25325.0)
- Microsoft Visual C++ 2017 Redistributable (x86) — 14.11.25325 (14.11.25325.0)
- Microsoft Visual C++ 2017 x64 Additional Runtime — 14.11.25325 (14.11.25325)
- Microsoft Visual C++ 2017 x64 Minimum Runtime — 14.11.25325 (14.11.25325)
- Microsoft Visual C++ 2017 x86 Additional Runtime — 14.11.25325 (14.11.25325)
- Microsoft Visual C++ 2017 x86 Minimum Runtime — 14.11.25325 (14.11.25325)
- Mozilla Firefox 65.0.2 (x64 en-US) (65.0.2)
- Notepad++ (64-bit x64) (7.5.1)
- Office 16 Click-to-Run Extensibility Component (16.0.12026.20264)
- Office 16 Click-to-Run Licensing Component (16.0.12026.20264)
- Office 16 Click-to-Run Localization Component (16.0.12026.20264)
- Opera 12.15 (12.15.1748)
- Skype™ 7.39 (7.39.102)
- Update for Windows 10 for x64-based Systems (KB4023057) (2.19.0.0)
- VLC media player (2.2.6)
- WinRAR 5.60 (64-bit) (5.60.0)
- Windows 10 Upgrade Assistant (1.4.9200.22175)
Hotfixes
- Client LanguagePack Package
- Foundation Package
- InternetExplorer Optional Package
- KB4054022
- KB4055237
- KB4055994
- KB4058043
- KB4078408
- KB4093110
- KB4094276
- KB4103729
- KB4131372
- KB4134661
- LanguageFeatures Basic en us Package
- LanguageFeatures Handwriting en us Package
- LanguageFeatures OCR en us Package
- LanguageFeatures Speech en us Package
- LanguageFeatures TextToSpeech en us Package
- MediaPlayer Package
- Microsoft OneCore ApplicationModel Sync Desktop FOD Package
- NetFx3 OnDemand Package
- ProfessionalEdition
- QuickAssist Package
- RollupFix
Behavior activities
Add for printing
MALICIOUS
No malicious indicators.
SUSPICIOUS
Executes PowerShell scripts
- OpenWith.exe (PID: 5992)
- OpenWith.exe (PID: 6024)
Creates files in the user directory
- powershell.exe (PID: 2516)
- powershell.exe (PID: 1108)
Executed via COM
- rundll32.exe (PID: 4232)
- RuntimeBroker.exe (PID: 5352)
- OpenWith.exe (PID: 5992)
- OpenWith.exe (PID: 6024)
- OpenWith.exe (PID: 4448)
Checks supported languages
- RuntimeBroker.exe (PID: 5352)
- OpenWith.exe (PID: 5992)
- powershell.exe (PID: 2516)
- OpenWith.exe (PID: 6024)
- powershell.exe (PID: 1108)
Modifies the open verb of a shell class
- OpenWith.exe (PID: 5992)
Reads the machine GUID from the registry
- powershell.exe (PID: 2516)
- powershell.exe (PID: 1108)
INFO
Reads the software policy settings
- powershell.exe (PID: 2516)
- powershell.exe (PID: 1108)
Reads settings of System Certificates
- powershell.exe (PID: 2516)
- powershell.exe (PID: 1108)
Find more information about signature artifacts and mapping to MITRE ATT&CK™ MATRIX at the full report