Добрый день! Я работаю системным администратором и решил изучить PowerShell. Для практики я создал скрипт, который автоматически настраивает систему. Вот код, который я использую: ```powershell # PowerShell Script to set the size of pagefile.sys $page_file_size = 1024 * 4; Write-Output "Standart PageFile size $page_file_size Mb"; $computer_sys = Get-WmiObject Win32_ComputerSystem -EnableAllPrivileges; $computer_sys.AutomaticManagedPagefile = $False; $computer_sys.Put(); $page_file = Get-WmiObject -Query "Select * From Win32_PageFileSetting Where Name like '%pagefile.sys'"; $page_file.InitialSize = $page_file_size; $page_file.MaximumSize = $page_file_size; $page_file.Put(); Read-Host -Prompt "Press Enter to exit" ``` Однако, я не понимаю, откуда берутся строки, которые выводятся, и почему они появляются вообще. Как я могу сделать так, чтобы выводилось только то, что мне нужно, и ничего лишнего? Вот вывод, который я получаю: ``` Standart PageFile size 4096 Mb Path : \\localhost\root\cimv2:Win32_ComputerSystem.Name="OSM-SYS-ADMIN" RelativePath : Win32_ComputerSystem.Name="OSM-SYS-ADMIN" Server : localhost NamespacePath : root\cimv2 ClassName : Win32_ComputerSystem IsClass : False IsInstance : True IsSingleton : False Path : \\localhost\root\cimv2:Win32_PageFileSetting.Name="C:\\pagefile.sys" RelativePath : Win32_PageFileSetting.Name="C:\\pagefile.sys" Server : localhost NamespacePath : root\cimv2 ClassName : Win32_PageFileSetting IsClass : False IsInstance : True IsSingleton : False Press Enter to exit: ``` Как мне убрать лишнюю информацию из вывода?
Ваша проблема заключается в том, что объекты, которые возвращаются командами `Get-WmiObject`, по умолчанию выводятся в консоль, так как PowerShell пытается показать результат выполнения команды. Чтобы убрать лишний вывод, вы можете использовать команду `Out-Null`, что позволит "поглотить" вывод и не отображать его. Вот ваши изменённые команды: ```powershell # PowerShell Script to set the size of pagefile.sys $page_file_size = 1024 * 4; Write-Output "Standart PageFile size $page_file_size Mb"; $computer_sys = Get-WmiObject Win32_ComputerSystem -EnableAllPrivileges | Out-Null; $computer_sys.AutomaticManagedPagefile = $False; $computer_sys.Put() | Out-Null; # Поглощаем вывод от Put() $page_file = Get-WmiObject -Query "Select * From Win32_PageFileSetting Where Name like '%pagefile.sys'" | Out-Null; $page_file.InitialSize = $page_file_size; $page_file.MaximumSize = $page_file_size; $page_file.Put() | Out-Null; # Поглощаем вывод от Put() Read-Host -Prompt "Press Enter to exit" ``` Каждый раз, когда вы используете `Out-Null`, вывод команды будет поглощён, и не появится в консоли. Также, если вам нужно выводить только определённые строки, вы можете использовать `Write-Host` вместо `Write-Output` для сообщений, которые хотите видеть. Однако, если вы просто хотите избавиться от ненужного вывода, лучше использовать `Out-Null`, как показано выше. Если вам нужно выводить только определённую информацию, вы также можете обрабатывать результаты соответствующих команд и выводить только нужные данные, например, используя `Select-Object`.
Регулировать вывод команд можно через коммандлеты Out-* , используя их через пайп
Например в вашем случае
($computer_sys = Get-WmiObject Win32_ComputerSystem -EnableAllPrivileges) | out-null