├── .gitbook └── assets │ ├── 4a9c6a24400e45aea31c30b7b1f2bdf8.png │ ├── add-controls.gif │ ├── add-quick-script-name.PNG │ ├── add-quick-script.PNG │ ├── addcontrol.gif │ ├── clear-ast.PNG │ ├── convert-to-splat.gif │ ├── convert.gif │ ├── converttodollarunder.gif │ ├── converttopsitem.gif │ ├── customtreeview.gif │ ├── debugging.mp4 │ ├── decompiler.gif │ ├── desktop.gif │ ├── drag.gif │ ├── enter-quick-script-name.PNG │ ├── export-function.gif │ ├── export-module-member.gif │ ├── extract-file (1).gif │ ├── extract-file.gif │ ├── file_details.png │ ├── generate-function.gif │ ├── get-childitem.gif │ ├── get-itemproperties.gif │ ├── global-vars.gif │ ├── goto (1).gif │ ├── goto.gif │ ├── image (1) (1).png │ ├── image (1) (2).png │ ├── image (1) (3) (1).png │ ├── image (1) (3).png │ ├── image (1).png │ ├── image (10).png │ ├── image (11).png │ ├── image (12).png │ ├── image (13).png │ ├── image (14).png │ ├── image (15).png │ ├── image (16).png │ ├── image (17).png │ ├── image (18) (1).png │ ├── image (18).png │ ├── image (19).png │ ├── image (2) (1).png │ ├── image (2).png │ ├── image (20).png │ ├── image (21).png │ ├── image (22) (1).png │ ├── image (22) (2).png │ ├── image (22).png │ ├── image (23) (1).png │ ├── image (23) (2).png │ ├── image (23).png │ ├── image (24).png │ ├── image (25).png │ ├── image (26) (1).png │ ├── image (26).png │ ├── image (27).png │ ├── image (28).png │ ├── image (29).png │ ├── image (3) (1).png │ ├── image (3).png │ ├── image (30).png │ ├── image (31).png │ ├── image (32).png │ ├── image (33).png │ ├── image (34).png │ ├── image (35).png │ ├── image (36).png │ ├── image (37).png │ ├── image (38).png │ ├── image (39).png │ ├── image (4) (1).png │ ├── image (4).png │ ├── image (40).png │ ├── image (41).png │ ├── image (42).png │ ├── image (43).png │ ├── image (44).png │ ├── image (45).png │ ├── image (46).png │ ├── image (47) (1) (1).png │ ├── image (47) (1).png │ ├── image (47).png │ ├── image (48) (1).png │ ├── image (48).png │ ├── image (49).png │ ├── image (5) (1).png │ ├── image (5).png │ ├── image (50).png │ ├── image (51).png │ ├── image (52).png │ ├── image (53).png │ ├── image (54).png │ ├── image (55).png │ ├── image (56).png │ ├── image (57).png │ ├── image (58).png │ ├── image (59).png │ ├── image (6).png │ ├── image (60).png │ ├── image (61).png │ ├── image (62).png │ ├── image (63).png │ ├── image (64).png │ ├── image (65).png │ ├── image (66).png │ ├── image (67).png │ ├── image (68).png │ ├── image (69).png │ ├── image (7) (1) (1) (1).png │ ├── image (7) (1) (1).png │ ├── image (7).png │ ├── image (70).png │ ├── image (71).png │ ├── image (72).png │ ├── image (73).png │ ├── image (74).png │ ├── image (75).png │ ├── image (76).png │ ├── image (77).png │ ├── image (78).png │ ├── image (79).png │ ├── image (8) (1).png │ ├── image (8) (2).png │ ├── image (8).png │ ├── image (80).png │ ├── image (81) (1).png │ ├── image (81).png │ ├── image (82) (1) (1).png │ ├── image (82) (1).png │ ├── image (82).png │ ├── image (83) (1).png │ ├── image (83).png │ ├── image (84).png │ ├── image (85).png │ ├── image (9).png │ ├── image.png │ ├── insert-path.gif │ ├── insert-variable.gif │ ├── install-license-full.gif │ ├── install-license.gif │ ├── introduce-using.gif │ ├── kvb9uuxzya.gif │ ├── license (1).gif │ ├── license.gif │ ├── modules.PNG │ ├── move-parameters.gif │ ├── multi-line.gif │ ├── new-form.gif │ ├── new-terminal.gif │ ├── open-winform-designer.gif │ ├── package.gif │ ├── package_modules.png │ ├── packagepsd1.gif │ ├── pinsession.gif │ ├── powershell-additonal-commands.bin │ ├── powershell-pro-tools-commands.bin │ ├── properties (1).gif │ ├── properties.gif │ ├── protocol.gif │ ├── providers.PNG │ ├── proxy.gif │ ├── quick-script-list.png │ ├── quickfix.gif │ ├── rapidsense.png │ ├── rapidsense_small.png │ ├── require_elevation.png │ ├── run-form.gif │ ├── run-script.gif │ ├── run.gif │ ├── save.gif │ ├── set-breakpoint.gif │ ├── setevents.gif │ ├── setprops.gif │ ├── show-ast.PNG │ ├── show-pseditor.gif │ ├── split-pipe.gif │ ├── stepping.gif │ ├── variables.png │ ├── vars-local.gif │ ├── vscode.gif │ ├── win-form-designer.gif │ └── wpf.gif ├── .gitignore ├── LICENSE ├── README.md ├── SUMMARY.md ├── assets ├── basic_chart.png ├── drive_space_chart.png ├── drive_space_example.png ├── griddle.png ├── hamburger-menu.png ├── iis-license ├── import.png ├── login-page.png ├── navigation.png ├── new-grid-example-script.png ├── new-grid-example.png ├── new-monitor-example-chart.png ├── new-monitor-example-script.png ├── new-table-example-image.png ├── new-table-example-script.png ├── new-udinput ├── powershell-additonal-commands ├── powershell-pro-tools-commands ├── threads_by_process.png ├── universal-dashboard-screenshot.png └── wwwroot.png ├── authentication.md ├── changelog ├── poshtools-changelog.md ├── poshtools-vscode-changelog.md ├── powershell-packager.md ├── powershell-pro-tools-module.md └── psscriptpad-changelog.md ├── debugging.md ├── images └── file_details.png ├── powershell-pro-tools-documentation ├── about-universal-dashboard.md ├── inputs.md ├── installation-and-configuration.md ├── installation-and-configuration │ ├── README.md │ └── visual-studio-offline-installation.md ├── installers.md ├── packaging │ ├── README.md │ ├── anti-virus.md │ ├── continuous-integration.md │ ├── merge-script.md │ ├── package-a-service.md │ ├── package-hosts.md │ ├── package.psd1.md │ ├── packaging-on-linux.md │ ├── packaging-on-mac-osx.md │ └── powershell-packager.md ├── powershell-module │ ├── README.md │ ├── aboutmergescriptconfig.md │ ├── convertto-csharp.md │ ├── convertto-powershell.md │ ├── global-hotkeys.md │ ├── install-poshprotoolslicense.md │ ├── merge-script.md │ ├── show-pseditor.md │ ├── show-psscriptpad.md │ ├── show-winformdesigner.md │ └── tui-designer.md ├── powershell-protect │ ├── README.md │ ├── actions.md │ ├── configuration.md │ ├── getting-started.md │ ├── installation.md │ └── rules.md ├── pscommander.md ├── psscriptpad.md ├── rest-apis.md ├── universal-dashboard.md ├── universal-dashboard │ ├── charts.md │ ├── creating-a-dashboard.md │ ├── formatting.md │ ├── grids.md │ ├── monitors.md │ ├── multi-page-dashboards.md │ ├── running-dashboards.md │ └── tables.md ├── visual-studio-code │ ├── README.md │ ├── automating-visual-studio-code.md │ ├── code-conversion.md │ ├── debugging │ │ ├── README.md │ │ ├── one-click-attach.md │ │ └── start-in-new-terminal.md │ ├── decompiler.md │ ├── diagnostics.md │ ├── enhanced-hover.md │ ├── generate-a-tool-from-a-function.md │ ├── generating-a-ui-from-a-function.md │ ├── packaging-in-visual-studio-code.md │ ├── pin-session.md │ ├── powershell-explorer.md │ ├── profiler.md │ ├── quick-scripts.md │ ├── rapidsense.md │ ├── refactoring.md │ ├── rename-symbols.md │ ├── sign-on-save.md │ └── windows-forms-designer.md └── visual-studio │ ├── README.md │ ├── analysis.md │ ├── bundling-and-packaging-with-msbuild.md │ ├── go-to-definition.md │ ├── powershell-6-and-7-support.md │ ├── refactoring.md │ ├── tool-windows.md │ └── user-interface-design │ ├── README.md │ └── building-a-gui-with-windows-forms-in-visual-studio.md ├── powershell-tools-documentation ├── chapter1 │ ├── README.md │ ├── local-debugging.md │ └── remote-debugging.md ├── powershell-interactive-window.md ├── project-system │ ├── README.md │ ├── advanced.md │ ├── build-eventys.md │ └── debug.md ├── settings │ ├── README.md │ ├── analysis.md │ ├── diagnostics.md │ └── general.md ├── unit-test-adapter.md └── visual-studio │ ├── format-document.md │ └── settings │ └── .editorconfig.md └── system-requirements.md /.gitbook/assets/4a9c6a24400e45aea31c30b7b1f2bdf8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/4a9c6a24400e45aea31c30b7b1f2bdf8.png -------------------------------------------------------------------------------- /.gitbook/assets/add-controls.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/add-controls.gif -------------------------------------------------------------------------------- /.gitbook/assets/add-quick-script-name.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/add-quick-script-name.PNG -------------------------------------------------------------------------------- /.gitbook/assets/add-quick-script.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/add-quick-script.PNG -------------------------------------------------------------------------------- /.gitbook/assets/addcontrol.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/addcontrol.gif -------------------------------------------------------------------------------- /.gitbook/assets/clear-ast.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/clear-ast.PNG -------------------------------------------------------------------------------- /.gitbook/assets/convert-to-splat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/convert-to-splat.gif -------------------------------------------------------------------------------- /.gitbook/assets/convert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/convert.gif -------------------------------------------------------------------------------- /.gitbook/assets/converttodollarunder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/converttodollarunder.gif -------------------------------------------------------------------------------- /.gitbook/assets/converttopsitem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/converttopsitem.gif -------------------------------------------------------------------------------- /.gitbook/assets/customtreeview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/customtreeview.gif -------------------------------------------------------------------------------- /.gitbook/assets/debugging.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/debugging.mp4 -------------------------------------------------------------------------------- /.gitbook/assets/decompiler.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/decompiler.gif -------------------------------------------------------------------------------- /.gitbook/assets/desktop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/desktop.gif -------------------------------------------------------------------------------- /.gitbook/assets/drag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/drag.gif -------------------------------------------------------------------------------- /.gitbook/assets/enter-quick-script-name.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/enter-quick-script-name.PNG -------------------------------------------------------------------------------- /.gitbook/assets/export-function.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/export-function.gif -------------------------------------------------------------------------------- /.gitbook/assets/export-module-member.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/export-module-member.gif -------------------------------------------------------------------------------- /.gitbook/assets/extract-file (1).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/extract-file (1).gif -------------------------------------------------------------------------------- /.gitbook/assets/extract-file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/extract-file.gif -------------------------------------------------------------------------------- /.gitbook/assets/file_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/file_details.png -------------------------------------------------------------------------------- /.gitbook/assets/generate-function.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/generate-function.gif -------------------------------------------------------------------------------- /.gitbook/assets/get-childitem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/get-childitem.gif -------------------------------------------------------------------------------- /.gitbook/assets/get-itemproperties.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/get-itemproperties.gif -------------------------------------------------------------------------------- /.gitbook/assets/global-vars.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/global-vars.gif -------------------------------------------------------------------------------- /.gitbook/assets/goto (1).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/goto (1).gif -------------------------------------------------------------------------------- /.gitbook/assets/goto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/goto.gif -------------------------------------------------------------------------------- /.gitbook/assets/image (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (1) (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (1) (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (1) (3) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (1) (3) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (1) (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (1) (3).png -------------------------------------------------------------------------------- /.gitbook/assets/image (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (10).png -------------------------------------------------------------------------------- /.gitbook/assets/image (11).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (11).png -------------------------------------------------------------------------------- /.gitbook/assets/image (12).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (12).png -------------------------------------------------------------------------------- /.gitbook/assets/image (13).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (13).png -------------------------------------------------------------------------------- /.gitbook/assets/image (14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (14).png -------------------------------------------------------------------------------- /.gitbook/assets/image (15).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (15).png -------------------------------------------------------------------------------- /.gitbook/assets/image (16).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (16).png -------------------------------------------------------------------------------- /.gitbook/assets/image (17).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (17).png -------------------------------------------------------------------------------- /.gitbook/assets/image (18) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (18) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (18).png -------------------------------------------------------------------------------- /.gitbook/assets/image (19).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (19).png -------------------------------------------------------------------------------- /.gitbook/assets/image (2) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (2) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (20).png -------------------------------------------------------------------------------- /.gitbook/assets/image (21).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (21).png -------------------------------------------------------------------------------- /.gitbook/assets/image (22) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (22) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (22) (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (22) (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (22).png -------------------------------------------------------------------------------- /.gitbook/assets/image (23) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (23) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (23) (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (23) (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (23).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (23).png -------------------------------------------------------------------------------- /.gitbook/assets/image (24).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (24).png -------------------------------------------------------------------------------- /.gitbook/assets/image (25).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (25).png -------------------------------------------------------------------------------- /.gitbook/assets/image (26) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (26) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (26).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (26).png -------------------------------------------------------------------------------- /.gitbook/assets/image (27).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (27).png -------------------------------------------------------------------------------- /.gitbook/assets/image (28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (28).png -------------------------------------------------------------------------------- /.gitbook/assets/image (29).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (29).png -------------------------------------------------------------------------------- /.gitbook/assets/image (3) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (3) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (3).png -------------------------------------------------------------------------------- /.gitbook/assets/image (30).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (30).png -------------------------------------------------------------------------------- /.gitbook/assets/image (31).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (31).png -------------------------------------------------------------------------------- /.gitbook/assets/image (32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (32).png -------------------------------------------------------------------------------- /.gitbook/assets/image (33).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (33).png -------------------------------------------------------------------------------- /.gitbook/assets/image (34).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (34).png -------------------------------------------------------------------------------- /.gitbook/assets/image (35).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (35).png -------------------------------------------------------------------------------- /.gitbook/assets/image (36).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (36).png -------------------------------------------------------------------------------- /.gitbook/assets/image (37).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (37).png -------------------------------------------------------------------------------- /.gitbook/assets/image (38).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (38).png -------------------------------------------------------------------------------- /.gitbook/assets/image (39).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (39).png -------------------------------------------------------------------------------- /.gitbook/assets/image (4) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (4) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (4).png -------------------------------------------------------------------------------- /.gitbook/assets/image (40).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (40).png -------------------------------------------------------------------------------- /.gitbook/assets/image (41).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (41).png -------------------------------------------------------------------------------- /.gitbook/assets/image (42).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (42).png -------------------------------------------------------------------------------- /.gitbook/assets/image (43).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (43).png -------------------------------------------------------------------------------- /.gitbook/assets/image (44).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (44).png -------------------------------------------------------------------------------- /.gitbook/assets/image (45).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (45).png -------------------------------------------------------------------------------- /.gitbook/assets/image (46).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (46).png -------------------------------------------------------------------------------- /.gitbook/assets/image (47) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (47) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (47) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (47) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (47).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (47).png -------------------------------------------------------------------------------- /.gitbook/assets/image (48) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (48) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (48).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (48).png -------------------------------------------------------------------------------- /.gitbook/assets/image (49).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (49).png -------------------------------------------------------------------------------- /.gitbook/assets/image (5) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (5) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (5).png -------------------------------------------------------------------------------- /.gitbook/assets/image (50).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (50).png -------------------------------------------------------------------------------- /.gitbook/assets/image (51).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (51).png -------------------------------------------------------------------------------- /.gitbook/assets/image (52).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (52).png -------------------------------------------------------------------------------- /.gitbook/assets/image (53).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (53).png -------------------------------------------------------------------------------- /.gitbook/assets/image (54).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (54).png -------------------------------------------------------------------------------- /.gitbook/assets/image (55).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (55).png -------------------------------------------------------------------------------- /.gitbook/assets/image (56).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (56).png -------------------------------------------------------------------------------- /.gitbook/assets/image (57).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (57).png -------------------------------------------------------------------------------- /.gitbook/assets/image (58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (58).png -------------------------------------------------------------------------------- /.gitbook/assets/image (59).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (59).png -------------------------------------------------------------------------------- /.gitbook/assets/image (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (6).png -------------------------------------------------------------------------------- /.gitbook/assets/image (60).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (60).png -------------------------------------------------------------------------------- /.gitbook/assets/image (61).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (61).png -------------------------------------------------------------------------------- /.gitbook/assets/image (62).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (62).png -------------------------------------------------------------------------------- /.gitbook/assets/image (63).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (63).png -------------------------------------------------------------------------------- /.gitbook/assets/image (64).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (64).png -------------------------------------------------------------------------------- /.gitbook/assets/image (65).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (65).png -------------------------------------------------------------------------------- /.gitbook/assets/image (66).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (66).png -------------------------------------------------------------------------------- /.gitbook/assets/image (67).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (67).png -------------------------------------------------------------------------------- /.gitbook/assets/image (68).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (68).png -------------------------------------------------------------------------------- /.gitbook/assets/image (69).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (69).png -------------------------------------------------------------------------------- /.gitbook/assets/image (7) (1) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (7) (1) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (7) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (7) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (7).png -------------------------------------------------------------------------------- /.gitbook/assets/image (70).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (70).png -------------------------------------------------------------------------------- /.gitbook/assets/image (71).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (71).png -------------------------------------------------------------------------------- /.gitbook/assets/image (72).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (72).png -------------------------------------------------------------------------------- /.gitbook/assets/image (73).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (73).png -------------------------------------------------------------------------------- /.gitbook/assets/image (74).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (74).png -------------------------------------------------------------------------------- /.gitbook/assets/image (75).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (75).png -------------------------------------------------------------------------------- /.gitbook/assets/image (76).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (76).png -------------------------------------------------------------------------------- /.gitbook/assets/image (77).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (77).png -------------------------------------------------------------------------------- /.gitbook/assets/image (78).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (78).png -------------------------------------------------------------------------------- /.gitbook/assets/image (79).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (79).png -------------------------------------------------------------------------------- /.gitbook/assets/image (8) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (8) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (8) (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (8) (2).png -------------------------------------------------------------------------------- /.gitbook/assets/image (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (8).png -------------------------------------------------------------------------------- /.gitbook/assets/image (80).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (80).png -------------------------------------------------------------------------------- /.gitbook/assets/image (81) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (81) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (81).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (81).png -------------------------------------------------------------------------------- /.gitbook/assets/image (82) (1) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (82) (1) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (82) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (82) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (82).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (82).png -------------------------------------------------------------------------------- /.gitbook/assets/image (83) (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (83) (1).png -------------------------------------------------------------------------------- /.gitbook/assets/image (83).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (83).png -------------------------------------------------------------------------------- /.gitbook/assets/image (84).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (84).png -------------------------------------------------------------------------------- /.gitbook/assets/image (85).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (85).png -------------------------------------------------------------------------------- /.gitbook/assets/image (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image (9).png -------------------------------------------------------------------------------- /.gitbook/assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/image.png -------------------------------------------------------------------------------- /.gitbook/assets/insert-path.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/insert-path.gif -------------------------------------------------------------------------------- /.gitbook/assets/insert-variable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/insert-variable.gif -------------------------------------------------------------------------------- /.gitbook/assets/install-license-full.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/install-license-full.gif -------------------------------------------------------------------------------- /.gitbook/assets/install-license.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/install-license.gif -------------------------------------------------------------------------------- /.gitbook/assets/introduce-using.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/introduce-using.gif -------------------------------------------------------------------------------- /.gitbook/assets/kvb9uuxzya.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/kvb9uuxzya.gif -------------------------------------------------------------------------------- /.gitbook/assets/license (1).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/license (1).gif -------------------------------------------------------------------------------- /.gitbook/assets/license.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/license.gif -------------------------------------------------------------------------------- /.gitbook/assets/modules.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/modules.PNG -------------------------------------------------------------------------------- /.gitbook/assets/move-parameters.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/move-parameters.gif -------------------------------------------------------------------------------- /.gitbook/assets/multi-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/multi-line.gif -------------------------------------------------------------------------------- /.gitbook/assets/new-form.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/new-form.gif -------------------------------------------------------------------------------- /.gitbook/assets/new-terminal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/new-terminal.gif -------------------------------------------------------------------------------- /.gitbook/assets/open-winform-designer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/open-winform-designer.gif -------------------------------------------------------------------------------- /.gitbook/assets/package.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/package.gif -------------------------------------------------------------------------------- /.gitbook/assets/package_modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/package_modules.png -------------------------------------------------------------------------------- /.gitbook/assets/packagepsd1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/packagepsd1.gif -------------------------------------------------------------------------------- /.gitbook/assets/pinsession.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/pinsession.gif -------------------------------------------------------------------------------- /.gitbook/assets/powershell-additonal-commands.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/powershell-additonal-commands.bin -------------------------------------------------------------------------------- /.gitbook/assets/powershell-pro-tools-commands.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/powershell-pro-tools-commands.bin -------------------------------------------------------------------------------- /.gitbook/assets/properties (1).gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/properties (1).gif -------------------------------------------------------------------------------- /.gitbook/assets/properties.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/properties.gif -------------------------------------------------------------------------------- /.gitbook/assets/protocol.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/protocol.gif -------------------------------------------------------------------------------- /.gitbook/assets/providers.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/providers.PNG -------------------------------------------------------------------------------- /.gitbook/assets/proxy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/proxy.gif -------------------------------------------------------------------------------- /.gitbook/assets/quick-script-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/quick-script-list.png -------------------------------------------------------------------------------- /.gitbook/assets/quickfix.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/quickfix.gif -------------------------------------------------------------------------------- /.gitbook/assets/rapidsense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/rapidsense.png -------------------------------------------------------------------------------- /.gitbook/assets/rapidsense_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/rapidsense_small.png -------------------------------------------------------------------------------- /.gitbook/assets/require_elevation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/require_elevation.png -------------------------------------------------------------------------------- /.gitbook/assets/run-form.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/run-form.gif -------------------------------------------------------------------------------- /.gitbook/assets/run-script.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/run-script.gif -------------------------------------------------------------------------------- /.gitbook/assets/run.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/run.gif -------------------------------------------------------------------------------- /.gitbook/assets/save.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/save.gif -------------------------------------------------------------------------------- /.gitbook/assets/set-breakpoint.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/set-breakpoint.gif -------------------------------------------------------------------------------- /.gitbook/assets/setevents.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/setevents.gif -------------------------------------------------------------------------------- /.gitbook/assets/setprops.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/setprops.gif -------------------------------------------------------------------------------- /.gitbook/assets/show-ast.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/show-ast.PNG -------------------------------------------------------------------------------- /.gitbook/assets/show-pseditor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/show-pseditor.gif -------------------------------------------------------------------------------- /.gitbook/assets/split-pipe.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/split-pipe.gif -------------------------------------------------------------------------------- /.gitbook/assets/stepping.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/stepping.gif -------------------------------------------------------------------------------- /.gitbook/assets/variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/variables.png -------------------------------------------------------------------------------- /.gitbook/assets/vars-local.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/vars-local.gif -------------------------------------------------------------------------------- /.gitbook/assets/vscode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/vscode.gif -------------------------------------------------------------------------------- /.gitbook/assets/win-form-designer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/win-form-designer.gif -------------------------------------------------------------------------------- /.gitbook/assets/wpf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/.gitbook/assets/wpf.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node rules: 2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 3 | .grunt 4 | 5 | ## Dependency directory 6 | ## Commenting this out is preferred by some people, see 7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git 8 | node_modules 9 | 10 | # Book build output 11 | _book 12 | 13 | # eBook build output 14 | *.epub 15 | *.mobi 16 | *.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Ironman Software, LLC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | PowerShell Pro Tools is a collection of productivity and development tools for PowerShell users. This toolset includes: 4 | 5 | * [PowerShell Tools for Visual Studio](https://docs.poshtools.com/powershell-pro-tools-documentation/visual-studio) 6 | * [PowerShell Pro Tools for Visual Studio Code](https://docs.poshtools.com/powershell-pro-tools-documentation/visual-studio-code) 7 | * [PSScriptPad](https://docs.poshtools.com/powershell-pro-tools-documentation/psscriptpad) 8 | * [PowerShell Pro Tools PowerShell Module](https://docs.poshtools.com/powershell-pro-tools-documentation/powershell-module) 9 | 10 | ## Download 11 | 12 | * [PowerShell Tools for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561) 13 | * [PowerShell Tools for Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsVS2022) 14 | * [PowerShell Pro Tools for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ironmansoftware.powershellprotools) 15 | * [Additional Tools](https://ironmansoftware.com/powershell-pro-tools/downloads) 16 | 17 | ## Training 18 | 19 | Follow along with our [free training course](https://ironmansoftware.com/training/powershell-pro-tools) for PowerShell Pro Tools. 20 | 21 | ## Licensing 22 | 23 | {% hint style="warning" %} 24 | We are sunsetting PowerShell Pro Tools. End of sales will be October 1st, 2024 with end of life is October 1st, 2025. [Learn more](https://blog.ironmansoftware.com/powershell-pro-tools-end-of-life). 25 | {% endhint %} 26 | 27 | * [Purchasing](https://www.ironmansoftware.com/pricing/powershell-pro-tools) 28 | * [Trial Key](https://ironmansoftware.com/trial/powershell-pro-tools) 29 | 30 | ## PowerShell Tools for Visual Studio Feature Comparison 31 | 32 | PowerShell Tools for Visual Studio is free. With a PowerShell Pro Tools license, you receive additional features. 33 | 34 | | Feature | PowerShell Tools | PowerShell Pro Tools | 35 | | -------------------------------- | ---------------- | -------------------- | 36 | | **Editor** | | | 37 | | Syntax Highlighting | ✅ | ✅ | 38 | | IntelliSense | ✅ | ✅ | 39 | | PSScriptAnalyzer Support | ❌ | ✅ | 40 | | Quick Fix Support | ❌ | ✅ | 41 | | Function Navigation | ✅ | ✅ | 42 | | Snippets | ✅ | ✅ | 43 | | C# to PowerShell Code Conversion | ❌ | ✅ | 44 | | **Project System** | | | 45 | | Build events | ✅ | ✅ | 46 | | Bundling | ❌ | ✅ | 47 | | Package as executable | ❌ | ✅ | 48 | | Obfuscation | ❌ | ✅ | 49 | | **Debugging** | | | 50 | | Local Debugging | ✅ | ✅ | 51 | | Remote Debugging | ✅ | ✅ | 52 | | Locals and Watch Window | ✅ | ✅ | 53 | | Call Stack Window | ✅ | ✅ | 54 | | Pester Test Adapter | ✅ | ✅ | 55 | | PowerShell 7 Support | ❌ | ✅ | 56 | | **Tools** | | | 57 | | Module Explorer | ✅ | ✅ | 58 | | WinForm Designer | ❌ | ✅ | 59 | | WPF Designer | ❌ | ✅ _VS 2019 Only_ | 60 | | Profiler | ❌ | ✅ | 61 | -------------------------------------------------------------------------------- /assets/basic_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/basic_chart.png -------------------------------------------------------------------------------- /assets/drive_space_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/drive_space_chart.png -------------------------------------------------------------------------------- /assets/drive_space_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/drive_space_example.png -------------------------------------------------------------------------------- /assets/griddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/griddle.png -------------------------------------------------------------------------------- /assets/hamburger-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/hamburger-menu.png -------------------------------------------------------------------------------- /assets/iis-license: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/iis-license -------------------------------------------------------------------------------- /assets/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/import.png -------------------------------------------------------------------------------- /assets/login-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/login-page.png -------------------------------------------------------------------------------- /assets/navigation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/navigation.png -------------------------------------------------------------------------------- /assets/new-grid-example-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-grid-example-script.png -------------------------------------------------------------------------------- /assets/new-grid-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-grid-example.png -------------------------------------------------------------------------------- /assets/new-monitor-example-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-monitor-example-chart.png -------------------------------------------------------------------------------- /assets/new-monitor-example-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-monitor-example-script.png -------------------------------------------------------------------------------- /assets/new-table-example-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-table-example-image.png -------------------------------------------------------------------------------- /assets/new-table-example-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-table-example-script.png -------------------------------------------------------------------------------- /assets/new-udinput: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/new-udinput -------------------------------------------------------------------------------- /assets/powershell-additonal-commands: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/powershell-additonal-commands -------------------------------------------------------------------------------- /assets/powershell-pro-tools-commands: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/powershell-pro-tools-commands -------------------------------------------------------------------------------- /assets/threads_by_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/threads_by_process.png -------------------------------------------------------------------------------- /assets/universal-dashboard-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/universal-dashboard-screenshot.png -------------------------------------------------------------------------------- /assets/wwwroot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/assets/wwwroot.png -------------------------------------------------------------------------------- /authentication.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved. ](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/authentication.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /changelog/powershell-packager.md: -------------------------------------------------------------------------------- 1 | # PowerShell Packager 2 | 3 | ## 2024.3.0 - 3/19/2024 4 | 5 | * Fixed an issue with packaging as a service (#3184) 6 | 7 | ### 2024.1.0 - 1/4/2024 8 | 9 | * Added support for signing executables 10 | * Added diagnostic logging 11 | * Fixed an issue with the output pane not scrolling properly. 12 | 13 | ### 2023.6.0 - 6/20/2023 14 | 15 | * Added installation directory selector during upgrade 16 | 17 | ## 2023.3.0 - 3/14/2023 18 | 19 | * Added support for loading package.psd1 files 20 | 21 | ## 2023.2.0 - 2/27/2023 22 | 23 | * Fixed an issue where specifying an icon with the IronmanPowerShellHost would cause the executable to fail to run. 24 | 25 | ## 2023.1.0 - 1/10/2023 26 | 27 | * Added support for specifying any .NET or PowerShell 7 version to package 28 | * Fixed an issue where the IronmanPowerShellHost would not accept arguments 29 | * Fixed an issue where the IronmanPowerShellHost would truncate the first 3 characters 30 | 31 | ## 2022.12.2 - 1/5/2023 32 | 33 | * Fixed an issue where the IronmanPowerShellWinFormsHost wouldn't run anything 34 | 35 | ## 2022.12.1 - 12/17/2022 36 | 37 | * Fixed an issue where the Ironman PowerShell Host wouldn't properly set $PSScriptRoot 38 | 39 | ## 2022.11.3 - 11-29-2022 40 | 41 | * Added support for packaging icons 42 | 43 | ## 2022.11.2 - 11-28-2022 44 | 45 | * Fixed an issue where the Require Elevation parameter would not work 46 | * Fixed an issue where modules would not be loaded correctly in packaged executables. 47 | * Fixed an issue where invalid File Versions would cause the packager to fail 48 | 49 | ## 2022.11.1 - 11-28-2022 50 | 51 | * Fixed an issue where the packager would start on Windows startup 52 | * Fixed an issue where the Actipro license was not activated properly 53 | 54 | ## 2202.11.0 - 11-16-2022 55 | 56 | * Initial release 57 | -------------------------------------------------------------------------------- /debugging.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/debugging.md -------------------------------------------------------------------------------- /images/file_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ironmansoftware/poshtools-docs/05c0a0e7af392085a69269751e154586285b0ccf/images/file_details.png -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/about-universal-dashboard.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved.](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/inputs.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved. ](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/inputs.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/installation-and-configuration.md: -------------------------------------------------------------------------------- 1 | # Installation and Licensing 2 | 3 | ### Installation 4 | 5 | **Visual Studio** 6 | 7 | PowerShell Pro Tools is included with [PowerShell Tools for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561). You can install it through Visual Studio or download it from the Marketplace. 8 | 9 | **Visual Studio Code** 10 | 11 | The Visual Studio Code extension is available on the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ironmansoftware.powershellprotools) and can be installed from within Visual Studio Code. Search for PowerShell Pro Tools when searching in VSC. 12 | 13 | **PowerShell Module** 14 | 15 | The PowerShell Module is available on the [PowerShell Gallery](https://www.powershellgallery.com/packages/powershellprotools/1.3.0). 16 | 17 | ## Licensing 18 | 19 | ### Trial Licenses 20 | 21 | Trial licenses are automatically installed on machines that have no been licensed previously. You have full access to all features of the product. The license will expire in three weeks. 22 | 23 | ### Purchasing a License 24 | 25 | Visit the [purchasing page](https://ironmansoftware.com/powershell-pro-tools/) and follow the instructions to purchase a license. A license will be emailed to you within ten minutes of purchase. 26 | 27 | ### Installing a License 28 | 29 | ### Visual Studio 30 | 31 | Click Help and About PowerShell Pro Tools to view and change your license. 32 | 33 | #### Visual Studio Code 34 | 35 | Use the `PowerShell Pro Tools: Install License Key` command to install your license. Simply copy and paste the contents of your license in to the text box that appears. You can access the commands by using the `Ctrl+Shift+P` key stroke. 36 | 37 | ### PowerShell 38 | 39 | You can use the `Install-PoshProToolsLicense` cmdlet to install your license. 40 | 41 | ```text 42 | Install-PoshProToolsLicense -Path C:\license.txt 43 | ``` 44 | 45 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/installation-and-configuration/README.md: -------------------------------------------------------------------------------- 1 | # Installation and Licensing 2 | 3 | Installation 4 | 5 | ### **Visual Studio** 6 | 7 | PowerShell Pro Tools is included with [PowerShell Tools for Visual Studio](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561). You can install it through Visual Studio or download it from the Marketplace. 8 | 9 | For offline installation instructions, click here. 10 | 11 | ### **Visual Studio Code** 12 | 13 | The Visual Studio Code extension is available on the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ironmansoftware.powershellprotools) and can be installed from within Visual Studio Code. Search for PowerShell Pro Tools when searching in VSC. 14 | 15 | ### **Visual Studio Code Offline Install** 16 | 17 | You can install a Visual Studio Code extension by downloading the VSIX file from the Marketplace and then clicking Install from VSIX within the extension pane in Visual Studio Code. 18 | 19 | ![](<../../.gitbook/assets/image (29).png>) 20 | 21 | ![](<../../.gitbook/assets/image (30).png>) 22 | 23 | **PowerShell Module** 24 | 25 | The PowerShell Module is available on the [PowerShell Gallery](https://www.powershellgallery.com/packages/powershellprotools/1.3.0). 26 | 27 | ### Installing Previous Versions 28 | 29 | #### Visual Studio 30 | 31 | Previous versions of the Visual Studio extension can be found on our [downloads page.](https://ironmansoftware.com/downloads) 32 | 33 | ![](<../../.gitbook/assets/image (61).png>) 34 | 35 | #### Visual Studio Code 36 | 37 | You can select from previous versions of the Visual Studio Code extension in the extension pane. Click the Gear icon next to PowerShell Pro Tools and select Install Another Version... 38 | 39 | ![](<../../.gitbook/assets/image (60).png>) 40 | 41 | #### PowerShell Module 42 | 43 | You can install a previous version of the PowerShell Module by using the `-RequiredVersion` parameter of `Install-Module`. 44 | 45 | ``` 46 | Install-Module -Name PowerShellProTools -RequiredVersion 5.7.0 47 | ``` 48 | 49 | ## Licensing 50 | 51 | {% hint style="warning" %} 52 | We are sunsetting PowerShell Pro Tools. End of sales will be October 1st, 2024 with end of life is October 1st, 2025. [Learn more](https://blog.ironmansoftware.com/powershell-pro-tools-end-of-life). 53 | {% endhint %} 54 | 55 | ### Trial Licenses 56 | 57 | By default, PowerShell Pro Tools installs and allows for a limited set of features. If you would like to trial PowerShell Pro Tools without these limitations, you can [request a trial key](https://www.ironmansoftware.com/trial/powershell-pro-tools). 58 | 59 | ### Purchasing a License 60 | 61 | Visit the [purchasing page](https://www.ironmansoftware.com/pricing/powershell-pro-tools) and follow the instructions to purchase a license. A license will be emailed to you within ten minutes of purchase. 62 | 63 | ### Installing a License 64 | 65 | ### Visual Studio 66 | 67 | PowerShell Tools for Visual Studio does not require a license. 68 | 69 | ### Visual Studio Code 70 | 71 | PowerShell Pro Tools for Visual Studio Code does not require a license. 72 | 73 | ### Manual Installation 74 | 75 | You can manually install your license by placing a `license.lic` file in your `%AppData%\PowerShell Pro Tools` directory. The directory may not exist. Place the full XML of the license file you received in this file. 76 | 77 | ### PSScriptPad 78 | 79 | PSScriptPad licenses can be installed using the above methods. PSScriptPad also supports loading license files that reside next to the PSScriptPad.exe file. Create a file called `license.lic` and place it in the same directory as PSScriptPad. The license will be loaded from this location, if present. 80 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/installation-and-configuration/visual-studio-offline-installation.md: -------------------------------------------------------------------------------- 1 | # Visual Studio Offline Installation 2 | 3 | You can accomplish offline installation by following the [Visual Studio offline installation instructions](https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio?view=vs-2019#use-the-command-line-to-create-a-local-cache). 4 | 5 | Download the Visual Studio Edition of choice and run the following command line. 6 | 7 | ``` 8 | vs_community.exe --layout c:\vslayout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional --lang en-US 9 | ``` 10 | 11 | You will now need to [download the PowerShell Tools VSIX](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561) file from the Visual Studio Marketplace. 12 | 13 | On a machine with an internet connection, double click the VSIX file. 14 | 15 | ![](<../../.gitbook/assets/image (23).png>) 16 | 17 | The online machine will install the certificate to the local machine. After the VSIX installer opens, click the Digital Signature link to view more information about the certificate. Click Install Certificate. 18 | 19 | ![](<../../.gitbook/assets/image (16).png>) 20 | 21 | Next, you'll want to export the certificate to a file. Use certmgr.msc to export the certificate. 22 | 23 | ![](<../../.gitbook/assets/image (18).png>) 24 | 25 | Ensure you export all the certificates in the certificate path. 26 | 27 | ![](<../../.gitbook/assets/image (8) (2).png>) 28 | 29 | Move the P7B file to the offline machine along with the PowerShell Tools VSIX file. Install the certificate to the certificate store. 30 | 31 | After creating the offline installation layout, you can then move the `vslayout` folder to an offline location. Within the certificates folder within `vslayout` folder, you may need to [install all the certificates ](https://docs.microsoft.com/en-us/visualstudio/install/install-certificates-for-visual-studio-offline?view=vs-2019)in order to correctly install the package. 32 | 33 | Run the offline installation using the following command line. 34 | 35 | ``` 36 | C:\vslayout\vs_community.exe --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional 37 | ``` 38 | 39 | Finally, double click the PowerShell Tools VSIX to install PowerShell Tools for Visual Studio. 40 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/installers.md: -------------------------------------------------------------------------------- 1 | # Installers 2 | 3 | {% hint style="info" %} 4 | The installer cmdlets are now open source and included in its [own module. ](https://github.com/ironmansoftware/psmsi) 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/README.md: -------------------------------------------------------------------------------- 1 | # Packaging 2 | 3 | ## Requirements: 4 | 5 | * [.NET Core 3.1 SDK or Later](https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-3.1.415-windows-x64-installer) 6 | * [.NET 5.0 SDK for Packaging PowerShell 7.1](https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-5.0.403-windows-x64-installer) 7 | * [.NET 4.6.2 Developer Pack](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net462) 8 | * Internet Connection 9 | 10 | The packaging component of PowerShell Pro Tools allows you to bundle, package as an executable and obfuscate the resulting executable. 11 | 12 | ## Bundling 13 | 14 | The process of bundling takes multiple scripts and creates a single script. Bundling automatically follows dot sourced scripts and includes them in the final output script. This process is recursive and will include scripts that are included by other scripts. Take for example you have three scripts. The first script looks like this. 15 | 16 | `Write-Host "Hi! I'm script 1"` 17 | 18 | `. $PSScriptRoot\Script2.ps1` 19 | 20 | Script1.ps1 outputs “Hi! I’m script 1” and then calls Script2.ps1 found at the $PSScriptRoot. Script2.ps1 could then look like this. 21 | 22 | \`Write-Host "Hi! I'm script 2" 23 | 24 | .\Script3.ps1\` 25 | 26 | Script2.ps2 outputs “Hi! I’m script 2” and the calls Script3.ps1. Script3.ps1 could consist of something like this. 27 | 28 | `Write-Host "Hi! I'm script 3"` 29 | 30 | If you wanted to deploy these scripts to an environment, you’d need to make sure to copy each script. Using bundling, you could combine the scripts, automatically, into a single script. The resulting script would look like this. 31 | 32 | \`Write-Host "Hi! I'm script 1" 33 | 34 | Write-Host "Hi! I'm script 2" 35 | 36 | Write-Host "Hi! I'm script 3"\` 37 | 38 | This enables developers to organize their code into multiple scripts but then deploy a single script. You could store all three scripts in source control, such as GitHub, and then run a bundling step using a continuous integration system, such as AppVeyor. 39 | 40 | You can bundle scripts with PowerShell Pro tools using [Visual Studio](https://poshtools.com/docs/posh-pro-tools/bundling-packaging-msbuild/) or [Merge-Script](https://poshtools.com/docs/posh-pro-tools/merge-script/). 41 | 42 | ## Packaging as an Executable 43 | 44 | Scripts can be packaged as a .NET executable for easy deployment on any Windows system. You can combine bundling with packaging to include multiple scripts into a single executable. 45 | 46 | You can package scripts with PowerShell Pro tools using [Visual Studio](https://poshtools.com/docs/posh-pro-tools/bundling-packaging-msbuild/) or [Merge-Script](https://poshtools.com/docs/posh-pro-tools/merge-script/). 47 | 48 | ## Obfuscation 49 | 50 | Once scripts have been packaged as a .NET executable, you can take an additional step and obfuscate the executable **(this feature is limited to Windows PowerShell only)**. This will make it much more difficult for users to decompile your executable and inspect your PowerShell script. Obfuscated assemblies scramble the C# code as well as the PowerShell script. 51 | 52 | You can obfuscate executables with PowerShell Pro tools using Visual Studio, Visual Studio Code and Merge-Script. 53 | 54 | ## Anti-Virus 55 | 56 | Anti-Virus vendors may flag executables as malicious after they have been compiled. You can use [VirusTotal](https://www.virustotal.com/gui/) to verify which vendors may flag your executable. If you need to submit a executable for evaluation, you can use the below list of vendor verification processes. 57 | 58 | * [Microsoft Defender](https://www.microsoft.com/en-us/wdsi/filesubmission) 59 | 60 | Learn more about issues with [anti-virus here](anti-virus.md). 61 | 62 | ## NuGet 63 | 64 | We use the Microsoft NuGet.org package system to download the packages necessary to host PowerShell in .NET. You will need an internet connection to access NuGet.org. 65 | 66 | By default, you should have the package source defined. If you do not, you can do so with the following `dotnet` command line. 67 | 68 | ``` 69 | dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org 70 | ``` 71 | 72 | For offline builds, you can also host your [own NuGet feed](https://docs.microsoft.com/en-us/nuget/hosting-packages/overview). 73 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/continuous-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Setup packaging within a continuous integration environment. 3 | --- 4 | 5 | # Continuous Integration 6 | 7 | ## MSBuild and Azure DevOps 8 | 9 | You will need to include the MSBuild targets and assemblies in your repository in order to packaging during the build process. 10 | 11 | ### Add Assets to Repository 12 | 13 | The MSBuild assets are stored in the Visual Studio MSBuild directory when the extension is installed. 14 | 15 | ``` 16 | C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\PowerShell Tools for Visual Studio 17 | ``` 18 | 19 | Your path to this folder may different based on your version and edition of Visual Studio. [VSWhere ](https://github.com/microsoft/vswhere)can be used to determine this file location. 20 | 21 | Place the files in a directory that you can link to during the build process. As an example, you can place them at the root of the repo. 22 | 23 |

PowerShell Tools for VS Folder

24 | 25 | ### Update PSSProj File 26 | 27 | Next, update the PSSProj file to import the targets file for PowerShell Tools for Visual Studio. Include a condition so the build still works locally. This should be placed at the bottom of the file after the existing import. If you placed the assets in a different location, you will need to update your path. The below example uses the SolutionDir MSBuild property to locate the directory of the solution file. 28 | 29 | ```markup 30 | 31 | 32 | ``` 33 | 34 | ### Setup the Azure DevOps Pipeline 35 | 36 | Finally, setup the Azure DevOps pipeline to run the `VSBuild` target against the Solution Directory. This example uploads the compiled artifact after the build so it can be downloaded from the Azure DevOps portal. 37 | 38 | ```yaml 39 | trigger: 40 | - main 41 | 42 | pool: 43 | vmImage: windows-latest 44 | 45 | steps: 46 | - task: VSBuild@1 47 | inputs: 48 | solution: '**\*.sln' 49 | - publish: $(System.DefaultWorkingDirectory)/bin/Debug 50 | artifact: App 51 | ``` 52 | 53 | ### Run the Build 54 | 55 | Once the pipeline is complete, it should run automatically. If it hasn't you can run it manually and view the job output. The built binaries will be included under the related section. 56 | 57 |
58 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/merge-script.md: -------------------------------------------------------------------------------- 1 | ## Merge-Script 2 | 3 | Merge-Script is part of the command line utilities [PowerShell module for PowerShell Pro Tools](https://www.powershellgallery.com/packages/PowerShellProTools). Merge-Script calls pspack.exe to produce bundle scripts or packaged executables. 4 | **NAME** 5 | Merge-Script 6 | 7 | **SYNOPSIS** 8 | Packages scripts into an executable or single PS1 script. 9 | 10 | **SYNTAX** 11 | Merge-Script -Script <String> \[-OutputPath <String>\] \[-Package <SwitchParameter>\] \[-Bundle <SwitchParameter>\] \[-Obfuscate <SwitchParameter>\] 12 | \[<CommonParameters>\] 13 | 14 | **DESCRIPTION** 15 | Packages scripts into an executable or single PS1 script. Specify the root script to package to produce a .NET 16 | executable that hosts the script. You can choose to bundle dot sourced scripts automatically using the Bundle 17 | switch. You can also bundle multiple PS1s into a single PS1 by using Bundle without Package. Use the Obfuscate parameter to obfuscate .NET assemblies. 18 | 19 | **PARAMETERS** 20 | -Script <String> 21 | The root script to package. 22 | 23 | Required? true 24 | Position? named 25 | Default value 26 | Accept pipeline input? false 27 | Accept wildcard characters? false 28 | 29 | -OutputPath \[<String>\] 30 | The directory to output scripts or executables from this command. 31 | 32 | Required? false 33 | Position? named 34 | Default value 35 | Accept pipeline input? false 36 | Accept wildcard characters? false 37 | 38 | -Package \[<SwitchParameter>\] 39 | Whether or not to package the script as a .NET executable. 40 | 41 | Required? false 42 | Position? named 43 | Default value 44 | Accept pipeline input? false 45 | Accept wildcard characters? false 46 | 47 | -Bundle \[<SwitchParameter>\] 48 | Whether or not to bundle dot sourced scripts. If this switch is specified, the bundler will try and locate dot 49 | sourced scripts and include them with the package. This operation is recursive. Bundling can locate scripts 50 | relative to the root script and can expand the $PSScriptRoot variable. 51 | 52 | Required? false 53 | Position? named 54 | Default value 55 | Accept pipeline input? false 56 | Accept wildcard characters? false 57 | 58 | -Obfuscate \[<SwitchParameter>\] 59 | Whether or not to obfuscate the .NET assembly. 60 | 61 | Required? false 62 | Position? named 63 | Default value 64 | Accept pipeline input? false 65 | Accept wildcard characters? false 66 | 67 | <CommonParameters> 68 | This cmdlet supports the common parameters: Verbose, Debug, 69 | ErrorAction, ErrorVariable, WarningAction, WarningVariable, 70 | OutBuffer, PipelineVariable, and OutVariable. For more information, see 71 | about\_CommonParameters \(http://go.microsoft.com/fwlink/?LinkID=113216\). 72 | 73 | **INPUTS** 74 | None 75 | 76 | **OUTPUTS** 77 | System.Object 78 | 79 | **EXAMPLE 1** 80 | 81 | Package a script into an executable 82 | 83 | ``` 84 | C:\PS> Merge-Script -Script .\MyScript.ps1 85 | ``` 86 | 87 | Outputs an executable, .\MyScript.exe, to the same location as the specified script. 88 | **EXAMPLE 2** 89 | 90 | Packages a script and outputs it to the specified path. 91 | 92 | ``` 93 | C:\PS> Merge-Script -Script .\MyScript.ps1 -OutputPath .\outDir 94 | ``` 95 | 96 | Packages a script and outputs it to the specified path. 97 | **EXAMPLE 3** 98 | 99 | Bundles and packages a script and its dependencies into an executable. 100 | 101 | ``` 102 | C:\PS> Merge-Script -Script .\MyScript.ps1 -OutputPath .\outDir -Bundle 103 | ``` 104 | 105 | Merge-Script searches for dot sourced files in the MyScript.ps1 file and includes them with the package. This 106 | operation is recusive, thus if a dot sourced script dot sources another script, that script will also be included. 107 | **EXAMPLE 4** 108 | 109 | Bundles a script as a single PS1 110 | 111 | ``` 112 | C:\PS> Merge-Script -Script .\MyScript.ps1 -OutputPath .\outDir -Bundle -Package 113 | ``` 114 | 115 | Merge-Script searches for dot sourced files in the MyScript.ps1 file and includes them with the package. This 116 | operation is recusive, thus if a dot sourced script dot sources another script, that script will also be included. 117 | Specifying Script as the OutputType produces a PS1 file rather than an executable. 118 | 119 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/package-a-service.md: -------------------------------------------------------------------------------- 1 | # Package as Service 2 | 3 | {% hint style="info" %} 4 | Requires [PowerShell Pro Tools](https://ironmansoftware.com/poshtools) 5 | {% endhint %} 6 | 7 | Please read the previous section on Package.psd1 before proceeding. 8 | 9 | The PowerShell Pro Tools package can create Windows services based on PS1 files. It has all the same options as other exectuables but requires a special entry point script. This script should be used at the `Root` value when using `Merge-Script` or the Entry Point when packaging through Visual Studio. 10 | 11 | 12 | 13 | ``` 14 | <# 15 | This function is called when the service is started. Once this function returns, 16 | your service will be set to a Running state. 17 | #> 18 | function OnStart() { 19 | 20 | } 21 | 22 | <# 23 | This function is called when the service is stopped. Once this function returns, 24 | your service will be set to a Stopped state and the process will terminate. 25 | #> 26 | function OnStop() { 27 | 28 | } 29 | 30 | # Specifies whether this service can be stopped once started 31 | $CanStop = $true 32 | ``` 33 | 34 | ## OnStart Function 35 | 36 | The `OnStart` function will be called when the service is started. You should not block the execution of this function. If you need to start a background process, consider using `Start-Job` . Once the function returns, the service will be listed as running in Service Control Manager. 37 | 38 | You will have access to a `$Service` variable within the `OnStart` function that is the [ServiceBase ](https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase?view=netframework-4.8)instance for your service. 39 | 40 | ## OnStop Function 41 | 42 | The `OnStop` function will be called when the Service Control Manager attempts to stop the service. You can do any clean up of resources for your service in this function. This would be a good place to stop any jobs using `Stop-Job`. 43 | 44 | You will have access to a `$Service` variable within the `OnStop` function that is the [ServiceBase ](https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase?view=netframework-4.8)instance for your service. 45 | 46 | ## CanStop Variable 47 | 48 | You can set the `$CanStop` variable to either `$true` or `$false`. If set to `$false`, the service cannot be stopped by the Service Control Manager. 49 | 50 | ## Arguments 51 | 52 | PowerShell services have access to both the process arguments and the service startup parameters. You can access the process arguments by referencing the `$ProcessArgs` variable. You can access the service startup parameters by accessing the `$ServiceArgs` variable. 53 | 54 | ## Installing a Service for Windows PowerShell 55 | 56 | You can install your service by passing `--install` to the service's executable. Install will not start the service so use Start-Service to start your new service by the name you provided. 57 | 58 | ## Uninstall a Service for Windows PowerShell 59 | 60 | To uninstall a service, use the `--uninstall` flag for your service's executable. It will also take care of stopping the service. 61 | 62 | ## Install a Service for PowerShell 7 63 | 64 | You will need to use the `New-Service` cmdlet to install a service for PowerShell 7. 65 | 66 | ``` 67 | New-Service -Name 'PowerShellService' -BinaryPathName "C:\myService.exe" 68 | ``` 69 | 70 | ## Uninstall a Service for PowerShell 7 71 | 72 | You will need to use the `Remove-Service` cmdlet to uninstall a service built for PowerShell 7. 73 | 74 | ``` 75 | Remove-Service -name 'PowerShellService' 76 | ``` 77 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/package-hosts.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Learn about the different ways to host your PowerShell scripts. 3 | --- 4 | 5 | # Package Hosts 6 | 7 | ## Default Host 8 | 9 | The default host uses the .NET SDK to compile an executable that runs your PowerShell script. The default host currently provides more options than the other hosts but is often flagged as suspicious by anti-virus applications. It also requires the .NET SDK installed on the local machine in order to function. 10 | 11 | You do not need to make any changes to use the default host. 12 | 13 | ## Ironman Software Host 14 | 15 | The Ironman Software host is a precompiled executable that is updated to include your script and settings. It does not require the .NET SDK and is less likely to be flagged by antivirus. 16 | 17 | To use the Ironman Software PowerShell host, you will need to set the Host property in `package.psd1` to the `IronmanPowerShellHost` or `IronmanPowerShellWinFormsHost`. 18 | 19 | The different between the standard host and the Win Forms host is that the latter will hide the console window. 20 | 21 | ### Supported Features 22 | 23 | A subset of the packaging features is supported by the Ironman Software host. 24 | 25 | * Script Bundling and Packaging 26 | * Automatic Module Bundling and Packaging 27 | * File Information (Version, Description, Company, etc) 28 | * Custom Application Icon 29 | * Windows PowerShell 30 | * Hidden Console Window 31 | 32 | Features that are not supported include: 33 | 34 | * PowerShell 7 35 | * Obfuscation 36 | * Services 37 | * Resources 38 | 39 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/packaging-on-linux.md: -------------------------------------------------------------------------------- 1 | # Packaging on Linux 2 | 3 | Packaging is supported on Linux systems. Packaged executables will contain the entire PowerShell and .NET runtime so destination systems will not need either of these installed. 4 | 5 | ## Prerequisites 6 | 7 | You will need to install the following in order to package on Linux 8 | 9 | * [.NET Core SDK 3.1 or later](https://docs.microsoft.com/en-us/dotnet/core/install/linux) 10 | * [PowerShell 7 or later](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.1) 11 | 12 | Once you have them installed, you can setup your script for packaging. 13 | 14 | ## Configuration 15 | 16 | You will need to create a [Package.psd1](package.psd1.md) file in order to package. Here is an example configuration that will package the `test.ps1` script and output it to the `desktop` of the mounted Windows drive in WSL2. You need to ensure that you set the .NET framework version to `netcoreapp31` and the platform to `linux-x64`. 17 | 18 | ```text 19 | @{ 20 | Root = '/mnt/c/Users/adamr/desktop/test.ps1' # Root script to package. This is the main entry point for the package. 21 | OutputPath = '/mnt/c/Users/adamr/desktop/out' # The output directory for the packaging process. 22 | Package = @{ 23 | Enabled = $true # Whether to package as an executable. 24 | DotNetVersion = 'netcoreapp31' 25 | PackageType = 'Console' # The type of executable to generate. Valid values are Service or Console. 26 | PowerShellArguments = '' # Sets the arguments for the PowerShell process that is hosted within the executable. You can use arguments like -NoExit, -ExecutionPolicy and -NoProfile. 27 | Platform = 'x64' # Sets the architecture of the executable. Can be either 'x86' or 'x64' 28 | PowerShellVersion = '7.0.3' # You can specify Windows PowerShell or PowerShell 7 or later versions version (e.g. 7.0.0) 29 | RuntimeIdentifier = 'linux-x64' # You can specify other runtimes like linux-x64 (See .NET Core runtime identifiers) 30 | } 31 | Bundle = @{ 32 | Enabled = $true # Whether to bundle multiple PS1s into a single PS1. Always enabled when Package is enabled. 33 | Modules = $true # Whether to bundle modules into the package 34 | } 35 | } 36 | ``` 37 | 38 | By default, some core modules are included. Additional modules will also be included when enabling the Modules bundle. 39 | 40 | ## Running the Packager 41 | 42 | You can run the packager by using the `Merge-Script` cmdlet of the PowerShell Pro Tools module. If you include the `-Verbose` flag, you will see output from the packaging process. 43 | 44 | In this example, we have a script named `test.ps1` with the following content. 45 | 46 | ```text 47 | "Hello. I'm running on $($PSVersionTable.Platform)" 48 | ``` 49 | 50 | You can install the PowerShell Pro Tools module and then run merge script against the package.psd1 file we created earlier. 51 | 52 | ```text 53 | Install-Module PowerShellProTools 54 | Merge-Script -ConfigFile ./package.psd1 -Verbose 55 | VERBOSE: Checking license 56 | VERBOSE: OutputPath is /mnt/c/Users/adamr/desktop/out 57 | VERBOSE: Bundling /mnt/c/Users/adamr/desktop/test.ps1 58 | VERBOSE: Packaging /tmp/test.ps1 59 | VERBOSE: Creating temp directory: /tmp/259a5b5f8e164250af2fb04c10e1b829 60 | VERBOSE: Packaging modules... 61 | VERBOSE: Checking dotnet version. 62 | VERBOSE: Checking dotnet version. 63 | VERBOSE: 5.0.102 64 | 65 | VERBOSE: 5.0.102 66 | 67 | VERBOSE: Creating package project. 68 | VERBOSE: Using .NET Framework version: netcoreapp31 69 | VERBOSE: Determining projects to restore... 70 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 1.22 sec). 71 | 72 | VERBOSE: Determining projects to restore... 73 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 1.22 sec). 74 | 75 | VERBOSE: Packaging /tmp/test.ps1 -> /mnt/c/Users/adamr/desktop/out/test 76 | VERBOSE: Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET 77 | Copyright (C) Microsoft Corporation. All rights reserved. 78 | 79 | Determining projects to restore... 80 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 566 ms). 81 | test -> /tmp/259a5b5f8e164250af2fb04c10e1b829/bin/Debug/netcoreapp3.1/linux-x64/test.dll 82 | test -> /mnt/c/Users/adamr/desktop/out/ 83 | 84 | VERBOSE: Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET 85 | Copyright (C) Microsoft Corporation. All rights reserved. 86 | 87 | Determining projects to restore... 88 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 566 ms). 89 | test -> /tmp/259a5b5f8e164250af2fb04c10e1b829/bin/Debug/netcoreapp3.1/linux-x64/test.dll 90 | test -> /mnt/c/Users/adamr/desktop/out/ 91 | ``` 92 | 93 | After the packaging process is done, you can run your executable. 94 | 95 | ```text 96 | PS /mnt/c/Users/adamr> ./Desktop/out/test 97 | Hello. I'm running on Unix 98 | ``` 99 | 100 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/packaging-on-mac-osx.md: -------------------------------------------------------------------------------- 1 | # Packaging on Mac OS X 2 | 3 | Packaging is supported on Mac OSX systems. Packaged executables will contain the entire PowerShell and .NET runtime so destination systems will not need either of these installed. 4 | 5 | ## Prerequisites 6 | 7 | You will need to install the following in order to package on Mac OS X. 8 | 9 | * [.NET Core SDK 3.1 or later](https://docs.microsoft.com/en-us/dotnet/core/install/macos) 10 | * [PowerShell 7 or later](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-7.1) 11 | 12 | Once you have them installed, you can setup your script for packaging. 13 | 14 | ## Configuration 15 | 16 | You will need to create a [Package.psd1](package.psd1.md) file in order to package. Here is an example configuration that will package the `test.ps1` script and output it to the `Downloads`You need to ensure that you set the .NET framework version to `netcoreapp31` and the platform to `osx-x64`. 17 | 18 | ```text 19 | @{ 20 | Root = '/Users/adamdriscoll/Downloads/test.ps1' # Root script to package. This is the main entry point for the package. 21 | OutputPath = '/Users/adamdriscoll/Downloads/out' # The output directory for the packaging process. 22 | Package = @{ 23 | Enabled = $true # Whether to package as an executable. 24 | DotNetVersion = 'netcoreapp31' 25 | PackageType = 'Console' # The type of executable to generate. Valid values are Service or Console. 26 | PowerShellArguments = '' # Sets the arguments for the PowerShell process that is hosted within the executable. You can use arguments like -NoExit, -ExecutionPolicy and -NoProfile. 27 | Platform = 'x64' # Sets the architecture of the executable. Can be either 'x86' or 'x64' 28 | PowerShellVersion = '7.0.3' # You can specify Windows PowerShell or PowerShell 7 or later versions version (e.g. 7.0.0) 29 | RuntimeIdentifier = 'osx-x64' # You can specify other runtimes like linux-x64 (See .NET Core runtime identifiers) 30 | } 31 | Bundle = @{ 32 | Enabled = $true # Whether to bundle multiple PS1s into a single PS1. Always enabled when Package is enabled. 33 | Modules = $true # Whether to bundle modules into the package 34 | } 35 | } 36 | ``` 37 | 38 | By default, some core modules are included. Additional modules will also be included when enabling the Modules bundle. 39 | 40 | ## Running the Packager 41 | 42 | You can run the packager by using the `Merge-Script` cmdlet of the PowerShell Pro Tools module. If you include the `-Verbose` flag, you will see output from the packaging process. 43 | 44 | In this example, we have a script named `test.ps1` with the following content. 45 | 46 | ```text 47 | "Hello. I'm running on $($PSVersionTable.OS)" 48 | ``` 49 | 50 | You can install the PowerShell Pro Tools module and then run merge script against the package.psd1 file we created earlier. 51 | 52 | ```text 53 | Install-Module PowerShellProTools 54 | Merge-Script -ConfigFile ./package.psd1 -Verbose 55 | VERBOSE: Checking license 56 | VERBOSE: OutputPath is /Users/adamdriscoll/Downloads/out 57 | VERBOSE: Bundling /Users/adamdriscoll/Downloads/test.ps1 58 | VERBOSE: Packaging /tmp/test.ps1 59 | VERBOSE: Creating temp directory: /tmp/259a5b5f8e164250af2fb04c10e1b829 60 | VERBOSE: Packaging modules... 61 | VERBOSE: Checking dotnet version. 62 | VERBOSE: Checking dotnet version. 63 | VERBOSE: 5.0.102 64 | 65 | VERBOSE: 5.0.102 66 | 67 | VERBOSE: Creating package project. 68 | VERBOSE: Using .NET Framework version: netcoreapp31 69 | VERBOSE: Determining projects to restore... 70 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 1.22 sec). 71 | 72 | VERBOSE: Determining projects to restore... 73 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 1.22 sec). 74 | 75 | VERBOSE: Packaging /tmp/test.ps1 -> /Users/adamdriscoll/Downloads/out/test 76 | VERBOSE: Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET 77 | Copyright (C) Microsoft Corporation. All rights reserved. 78 | 79 | Determining projects to restore... 80 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 566 ms). 81 | test -> /tmp/259a5b5f8e164250af2fb04c10e1b829/bin/Debug/netcoreapp3.1/osx-x64/test.dll 82 | test -> /Users/adamdriscoll/Downloads/out 83 | 84 | VERBOSE: Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET 85 | Copyright (C) Microsoft Corporation. All rights reserved. 86 | 87 | Determining projects to restore... 88 | Restored /tmp/259a5b5f8e164250af2fb04c10e1b829/test.csproj (in 566 ms). 89 | test -> /tmp/259a5b5f8e164250af2fb04c10e1b829/bin/Debug/netcoreapp3.1/osx-x64/test.dll 90 | test -> /Users/adamdriscoll/Downloads/out 91 | ``` 92 | 93 | After the packaging process is done, you can run your executable. 94 | 95 | ![](../../.gitbook/assets/image%20%2863%29.png) 96 | 97 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/packaging/powershell-packager.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Packager PowerShell scripts as executables. 3 | --- 4 | 5 | # PowerShell Packager 6 | 7 | {% hint style="info" %} 8 | Download from the [PowerShell Pro Tools download page](https://ironmansoftware.com/powershell-pro-tools/downloads). 9 | {% endhint %} 10 | 11 | The PowerShell Packager uses the same packaging tools as the PowerShell Pro Tools module and PowerShell Pro Tools for VS Code but provides a simple interface that does not require configuration files or special build tools. This tool currently only supports Windows PowerShell executables. 12 | 13 | Running the packager will provide a simple wizard that you can step through to provide details for the resulting executable. 14 | 15 |
16 | 17 | ## Properties 18 | 19 | ### Root Script 20 | 21 | The root script is the script that will run when the executable is run. You can dot source other scripts and import modules in this script. This script will also receive the parameters passed to the executable. 22 | 23 | ### Package Referenced Scripts 24 | 25 | Any dot-sourced script referenced in the root script will be packaged as well. If those scripts include other dot-sourced scripts, they will also be included and so on. 26 | 27 | ### Package Referenced Modules 28 | 29 | Any module imported with `Import-Module` will be included with the executable. 30 | 31 | ### File Properties 32 | 33 | These are the properties that will be set on the resulting executable. For example, File Version, Description and Company name. 34 | 35 | ### Application Properties 36 | 37 | These are properties of the application itself. These include hiding the console window and Windows UI support. 38 | 39 | ### Output Path 40 | 41 | The folder path to output the resulting executable to. 42 | 43 | ## Certificate 44 | 45 | The certificate is optional and will cause the packager to call `Set-AuthenticodeSignature` against the executable. The certificate path should be a certificate provider path. 46 | 47 | ```powershell 48 | Cert:\LocalMachine\My\1111DDDDD 49 | ``` 50 | 51 | ## Diagnostic Logging 52 | 53 | The packager will automatically write diagnostic logs to the following location. 54 | 55 | ```powershell 56 | $Env:LOCALAPPDATA\PowerShellTools\PSPackager 57 | ``` 58 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/README.md: -------------------------------------------------------------------------------- 1 | # PowerShell Module 2 | 3 | The PowerShell Pro Tools PowerShell Module provides code conversion and packaging cmdlets. You can install the module from the PowerShell Gallery. 4 | 5 | `Install-Module PowerShellProTools` 6 | 7 | For more information, visit the [PowerShell Gallery](https://www.powershellgallery.com/packages/PowerShellProTools). 8 | 9 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/aboutmergescriptconfig.md: -------------------------------------------------------------------------------- 1 | # about\_MergeScriptConfig 2 | 3 | 4 | 5 | {% hint style="info" %} 6 | Requires [PowerShell Pro Tools](https://ironmansoftware.com/poshtools) 7 | {% endhint %} 8 | 9 | ## SHORT DESCRIPTION 10 | 11 | About config hashtables for Merge-Script 12 | 13 | ## LONG DESCRIPTION 14 | 15 | This about file contains information about using hashtables and PSD1 files to configure Merge-Script. 16 | 17 | ### Config File Schema 18 | 19 | ```text 20 | @{ 21 | Root = 'c:\Users\Adam\Desktop\service.ps1' # Root script to package. This is the main entry point for the package. 22 | OutputPath = 'c:\Users\Adam\Desktop\out' # The output directory for the packaging process. 23 | Package = @{ 24 | Enabled = $true # Whether to package as an executable. 25 | Obfuscate = $false # Whether to obfuscate the resulting executable. 26 | HideConsoleWindow = $false # Whether to hide the console window. Only valid for console applications. 27 | DotNetVersion = 'v4.6.2' # The target .NET Framework version. You will need the .NET Developer Pack for this version installed on your machine. 28 | FileVersion = '1.0.0' # The output file version 29 | FileDescription = '' # The output file description 30 | ProductName = '' # The output file product name 31 | ProductVersion = '' # The output file product version. 32 | Copyright = '' # The output file copyright 33 | RequireElevation = $false # Whether to require elevation when running the executable. Only valid for console applications. 34 | ApplicationIconPath = '' # The path to the application icon to use for the executable. 35 | PackageType = 'Console' # The type of executable to generate. Valid values are Service or Console. 36 | ServiceName = "" # The name of the service if the package type is Service. 37 | ServiceDisplayName = "" # The display name of the service if the package type is Service. 38 | PowerShellCore = $true # Whether to bundle the PowerShell Core runtime within your executable. 39 | HighDPISupport = $true # Whether to enable high DPI support for WinForm applications 40 | PowerShellArguments = '' # Sets the arguments for the PowerShell process that is hosted within the executable. You can use arguments like -NoExit, -ExecutionPolicy and -NoProfile. 41 | Platform = 'x64' # Sets the architecture of the executable. Can be either 'x86' or 'x64' 42 | } 43 | Bundle = @{ 44 | Enabled = $true # Whether to bundle multiple PS1s into a single PS1. Always enabled when Package is enabled. 45 | Modules = $true # Whether to bundle modules into the package 46 | } 47 | } 48 | 49 | ``` 50 | 51 | ### Using a config file 52 | 53 | A config file can be used either from within a PowerShell script as a hashtable or imported from a PSD1 file containing the hashtable. 54 | 55 | ## EXAMPLES 56 | 57 | It is not required to include all aspects of the config when using Merge-Script. The only required components are Root and OutputPath. Aside from that, anything that is not include will be considered false. This means that in the below example, packaging is disabled but bundling is not. The below operation will not bundle nested modules or required assemblies of any modules it is bundling. 58 | 59 | ```text 60 | Merge-Script -Config @{ 61 | Root = ".\MyScript.ps1" 62 | OutputPath = ".\" 63 | Bundle = @{ 64 | Enabled = $true 65 | Modules = $true 66 | } 67 | } 68 | ``` 69 | 70 | ### Create console application 71 | 72 | Creates a PowerShell console based application that has an application icon and hides the console window. 73 | 74 | ```text 75 | @{ 76 | Root = 'c:\Users\Adam\Desktop\form.ps1' 77 | OutputPath = 'c:\Users\Adam\Desktop\out' 78 | Package = @{ 79 | Enabled = $true 80 | HideConsoleWindow = $true 81 | DotNetVersion = 'v4.6.2' 82 | ApplicationIconPath = 'C:\users\adam\desktop\icon.ico' 83 | } 84 | } 85 | 86 | ``` 87 | 88 | ### Create a service 89 | 90 | Creates a PowerShell service based on the service.ps1 file and outputs to the out directory on the desktop. It will use the .NET 4.6.2 Developer Pack. The service name will be PSService and the display name will be PowerShell Service. 91 | 92 | ```text 93 | @{ 94 | Root = 'c:\Users\Adam\Desktop\service.ps1' 95 | OutputPath = 'c:\Users\Adam\Desktop\out' 96 | Package = @{ 97 | Enabled = $true 98 | DotNetVersion = 'v4.6.2' 99 | FileVersion = '1.0.0' 100 | FileDescription = '' 101 | ProductName = '' 102 | ProductVersion = '' 103 | Copyright = '' 104 | PackageType = 'Service' 105 | ServiceName = "PSService" 106 | ServiceDisplayName = "PowerShell Service" 107 | } 108 | } 109 | 110 | ``` 111 | 112 | After building a service, you can install the service with the `--install` parameter of your service's executable. To uninstall a service, use the `--uninstall` parameter. 113 | 114 | ### Bundle PowerShell Core Engine with your Script 115 | 116 | Creates an executable that contains the PowerShell Core engine. This executable does not require the target machine have PowerShell Core or .NET Core installed. The size of the executable will be considerably larger than a typical `Merge-Script` executable. 117 | 118 | ```text 119 | @{ 120 | Root = 'c:\Users\Adam\Desktop\script.ps1' 121 | OutputPath = 'c:\Users\Adam\Desktop\out' 122 | Package = @{ 123 | Enabled = $true 124 | PowerShellVersion = '7.2.0' 125 | DotNetVersion = 'net6.0' 126 | } 127 | Bundle = @{ 128 | Enabled = $true 129 | Modules = $true 130 | } 131 | } 132 | ``` 133 | 134 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/convertto-csharp.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: PowerShellToolsPro.Cmdlets.dll-Help.xml 3 | online version: null 4 | schema: 2.0.0 5 | --- 6 | 7 | # ConvertTo-CSharp 8 | 9 | {% hint style="warning" %} 10 | This cmdlet is no longer supported but is still available as an [open-source project](https://github.com/ironmansoftware/code-conversion). 11 | {% endhint %} 12 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/convertto-powershell.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: PowerShellToolsPro.Cmdlets.dll-Help.xml 3 | online version: null 4 | schema: 2.0.0 5 | --- 6 | 7 | # ConvertTo-PowerShell 8 | 9 | {% hint style="warning" %} 10 | This cmdlet is no longer supported but is still available as an [open-source project](https://github.com/ironmansoftware/code-conversion). 11 | {% endhint %} 12 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/global-hotkeys.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Global hotkeys for invoking PowerShell with keystrokes. 3 | --- 4 | 5 | # Global Hotkeys 6 | 7 | {% hint style="info" %} 8 | Global Hotkeys are only supported on Windows. 9 | {% endhint %} 10 | 11 | Global hotkeys allow you to assign hotkeys to PowerShell script blocks. You have access to the current foreground window and process so you can customize your hotkey actions based on what window is open. 12 | 13 | ## Defining a Hotkey 14 | 15 | {% hint style="warning" %} 16 | Hotkeys are associated with the current PowerShell window. If you close the window, the hotkeys won't work. You can use the hotkeys anywhere on your desktop as long as PowerShell is open. 17 | {% endhint %} 18 | 19 | You can define hot keys using `Set-Hotkey`. This cmdlet allows you to specify the action to execute and the modifiers and key to invoke the action. 20 | 21 | In the example, pressing `Ctrl+B` will open notepad. 22 | 23 | ```text 24 | Set-Hotkey -Action { Start-Process Notepad } -ModifierKeys Ctrl -Key B 25 | ``` 26 | 27 | ### Passing Variables 28 | 29 | You can pass variables by using the `$ArgumentList` parameter. These variables will appear in `$args` variable after the built in foreground and process ID variables. 30 | 31 | ```text 32 | $Process = "Notepad" 33 | Set-Hotkey -Action { Start-Process $args[2] } -ArgumentList $Process -ModifierKeys Ctrl -Key B 34 | ``` 35 | 36 | ### Accessing Foreground Window and Process Information 37 | 38 | You can access the foreground window title and process information by using the `$args` variable. The first argument it the foreground window title and the second argument is the process ID. 39 | 40 | This example will write the foreground window title to the console. 41 | 42 | ```text 43 | Set-Hotkey -Action { Write-Host $args[0] } -ModifierKeys Ctrl -Key B 44 | ``` 45 | 46 | This example will open another instance of the selected process. The second argument is a process ID. 47 | 48 | ```text 49 | Set-Hotkey -Action { Start-Process (Get-Process -Id $args[1]).Path } -ModifierKeys Ctrl -Key B 50 | ``` 51 | 52 | ## Retrieving Hotkeys 53 | 54 | You can use `Get-Hotkey` to retrieve hotkeys that have been defined. 55 | 56 | ```text 57 | PS C:\Users\adamr> Get-Hotkey 58 | 59 | Action ModifierKeys Keys 60 | ------ ------------ ---- 61 | Start-Process $args[1].Path Ctrl B 62 | ``` 63 | 64 | ## Removing Hotkeys 65 | 66 | You can remove hotkeys using `Remove-Hotkey`. 67 | 68 | ```text 69 | Get-Hotkey | Remove-Hotkey 70 | ``` 71 | 72 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/install-poshprotoolslicense.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: PowerShellToolsPro.Cmdlets.dll-Help.xml 3 | online version: null 4 | schema: 2.0.0 5 | --- 6 | 7 | # Install-PoshProToolsLicense 8 | 9 | {% hint style="info" %} 10 | Requires [PowerShell Pro Tools](https://ironmansoftware.com/poshtools) 11 | {% endhint %} 12 | 13 | ## SYNOPSIS 14 | 15 | Installs a PowerShell Pro Tools license. 16 | 17 | ## SYNTAX 18 | 19 | ```text 20 | Install-PoshProToolsLicense -License 21 | ``` 22 | 23 | ## DESCRIPTION 24 | 25 | Installs a PowerShell Pro Tools license. 26 | 27 | ## EXAMPLES 28 | 29 | ### Example 1 30 | 31 | ```text 32 | PS C:\> Install-PoshProToolsLicense -License "asdfas" 33 | ``` 34 | 35 | Installs the specified PowerShell Pro Tools license. 36 | 37 | ## PARAMETERS 38 | 39 | ### -License 40 | 41 | License to install. This should be the content of the license and not a path. 42 | 43 | ```yaml 44 | Type: String 45 | Parameter Sets: (All) 46 | Aliases: 47 | 48 | Required: True 49 | Position: Named 50 | Default value: None 51 | Accept pipeline input: False 52 | Accept wildcard characters: False 53 | ``` 54 | 55 | ## INPUTS 56 | 57 | ### None 58 | 59 | ## OUTPUTS 60 | 61 | ### System.Object 62 | 63 | ## NOTES 64 | 65 | ## RELATED LINKS 66 | 67 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/merge-script.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: PowerShellToolsPro.Cmdlets.dll-Help.xml 3 | online version: null 4 | schema: 2.0.0 5 | --- 6 | 7 | # Merge-Script 8 | 9 | {% hint style="info" %} 10 | Requires [PowerShell Pro Tools](https://ironmansoftware.com/poshtools) 11 | {% endhint %} 12 | 13 | ## SYNOPSIS 14 | 15 | Packages, bundles and\or obfuscates scripts. 16 | 17 | ## SYNTAX 18 | 19 | ```text 20 | Merge-Script -Script [-OutputPath ] [-Bundle] [-Package] [-Obfuscate] 21 | 22 | Merge-Script -Config 23 | 24 | Merge-Script -ConfigFile 25 | ``` 26 | 27 | ## DESCRIPTION 28 | 29 | Packages, bundles and\or obfuscates scripts. Packaging and bundling are not mutually exclusive. Obfuscation 30 | requires packaging. 31 | 32 | ## EXAMPLES 33 | 34 | ### Example 1 35 | 36 | ```text 37 | PS C:\> Merge-Script -Script .\MyScript.ps1 -Output .\ -Package 38 | ``` 39 | 40 | Packages MyScript.ps1 into MyScript.exe and then outputs it to .\ 41 | 42 | ### Example 2 43 | 44 | ```text 45 | PS C:\> Merge-Script -Script .\MyScript.ps1 -Output .\Bundle -Bundle 46 | ``` 47 | 48 | Bundles MyScript.ps1 and any scripts it dot sources into a single file and outputs it to .\Bundle. 49 | 50 | ### Example 3 51 | 52 | ```text 53 | PS C:\> Merge-Script -Script .\MyScript.ps1 -Output .\Bundle -Bundle -Package 54 | ``` 55 | 56 | Bundles MyScript.ps1 and any scripts it dot sources into a single file and then packages it into MyScript.exe and outputs it to .\Bundle. 57 | 58 | ### Example 4 59 | 60 | ```text 61 | PS C:\> Merge-Script -Script .\MyScript.ps1 -Output .\Bundle -Bundle -Package -Obfuscate 62 | ``` 63 | 64 | Bundles MyScript.ps1 and any scripts it dot sources into a single file and then packages it into MyScript.exe and outputs it to .\Bundle. The resulting executable will be obfuscated. 65 | 66 | ## PARAMETERS 67 | 68 | ### -Bundle 69 | 70 | Bundles the script with dot sourced scripts found in the script. 71 | 72 | ```yaml 73 | Type: SwitchParameter 74 | Parameter Sets: (All) 75 | Aliases: 76 | 77 | Required: False 78 | Position: Named 79 | Default value: None 80 | Accept pipeline input: False 81 | Accept wildcard characters: False 82 | ``` 83 | 84 | ### -Config 85 | 86 | Config hashtable. More information found on about\_MergeScriptConfig. 87 | 88 | ```yaml 89 | Type: Hashtable 90 | Parameter Sets: (All) 91 | Aliases: 92 | 93 | Required: True 94 | Position: Named 95 | Default value: None 96 | Accept pipeline input: False 97 | Accept wildcard characters: False 98 | ``` 99 | 100 | ### -ConfigFile 101 | 102 | Config file. More information found on about\_MergeScriptConfig. 103 | 104 | ```yaml 105 | Type: String 106 | Parameter Sets: (All) 107 | Aliases: 108 | 109 | Required: True 110 | Position: Named 111 | Default value: None 112 | Accept pipeline input: False 113 | Accept wildcard characters: False 114 | ``` 115 | 116 | ### -Obfuscate 117 | 118 | Obfuscate the .NET executable and PowerShell script. 119 | 120 | ```yaml 121 | Type: SwitchParameter 122 | Parameter Sets: (All) 123 | Aliases: 124 | 125 | Required: False 126 | Position: Named 127 | Default value: None 128 | Accept pipeline input: False 129 | Accept wildcard characters: False 130 | ``` 131 | 132 | ### -OutputPath 133 | 134 | The output path for the resulting script or executable. 135 | This should be a directory. 136 | 137 | ```yaml 138 | Type: String 139 | Parameter Sets: (All) 140 | Aliases: 141 | 142 | Required: False 143 | Position: Named 144 | Default value: None 145 | Accept pipeline input: False 146 | Accept wildcard characters: False 147 | ``` 148 | 149 | ### -Package 150 | 151 | Package the script as a .NET executable. 152 | 153 | ```yaml 154 | Type: SwitchParameter 155 | Parameter Sets: (All) 156 | Aliases: 157 | 158 | Required: False 159 | Position: Named 160 | Default value: None 161 | Accept pipeline input: False 162 | Accept wildcard characters: False 163 | ``` 164 | 165 | ### -Script 166 | 167 | The script to package in an executable and optionally bundle with other scripts. 168 | 169 | ```yaml 170 | Type: String 171 | Parameter Sets: (All) 172 | Aliases: 173 | 174 | Required: True 175 | Position: Named 176 | Default value: None 177 | Accept pipeline input: False 178 | Accept wildcard characters: False 179 | ``` 180 | 181 | ## INPUTS 182 | 183 | ### None 184 | 185 | ## OUTPUTS 186 | 187 | ### System.Object 188 | 189 | ## NOTES 190 | 191 | ## RELATED LINKS 192 | 193 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/show-pseditor.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: A terminal PowerShell editor. 3 | --- 4 | 5 | # Show-PSEditor 6 | 7 | {% hint style="info" %} 8 | Show-PSEditor is now open source and available [here](https://github.com/ironmansoftware/psedit). 9 | {% endhint %} 10 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/show-psscriptpad.md: -------------------------------------------------------------------------------- 1 | # Show-PSScriptPad 2 | 3 | Opens PSScriptPad from the PowerShell. 4 | 5 | ## Open a New PSScriptPad Window 6 | 7 | ```text 8 | Show-PSScriptPad 9 | ``` 10 | 11 | ## Open a script in PSScriptPad 12 | 13 | ```text 14 | Show-PSScriptPad .\test.ps1 15 | ``` 16 | 17 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/show-winformdesigner.md: -------------------------------------------------------------------------------- 1 | # Show-WinFormDesigner 2 | 3 | 4 | 5 | {% hint style="info" %} 6 | Requires [PowerShell Pro Tools](https://ironmansoftware.com/poshtools) 7 | {% endhint %} 8 | 9 | ## SYNOPSIS 10 | 11 | Shows the Windows Form designer. 12 | 13 | ## SYNTAX 14 | 15 | ```text 16 | Show-WinFormDesigner -DesignerFilePath -CodeFilePath [-EditorPipeName ] [-Theme ] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | 21 | Shows the Windows Form designer. 22 | 23 | ## EXAMPLES 24 | 25 | ### Example 1 26 | 27 | ```text 28 | PS C:\> Show-WinFormDesigner -DesignerFilePath .\form.designer.ps1 -CodeFilePath .\form.ps1 29 | ``` 30 | 31 | Opens the Windows Form designer and loads the form.designer.ps1 form. 32 | 33 | ## PARAMETERS 34 | 35 | ### -DesignerFilePath 36 | 37 | The path to the designer PS1. This file should not be edited by hand. 38 | 39 | ```yaml 40 | Type: String 41 | Parameter Sets: (All) 42 | Aliases: 43 | 44 | Required: True 45 | Position: Named 46 | Default value: None 47 | Accept pipeline input: False 48 | Accept wildcard characters: False 49 | ``` 50 | 51 | ### -CodeFilePath 52 | 53 | The path to the code PS1 that will contain the event handlers for the form designer. 54 | 55 | ```yaml 56 | Type: String 57 | Parameter Sets: (All) 58 | Aliases: 59 | 60 | Required: True 61 | Position: Named 62 | Default value: None 63 | Accept pipeline input: False 64 | Accept wildcard characters: False 65 | ``` 66 | 67 | ### -EditorPipeName 68 | 69 | A named pipe to connect to the allow interaction with an editor. This is used by the VS Code extension. 70 | 71 | ```yaml 72 | Type: String 73 | Parameter Sets: (All) 74 | Aliases: 75 | 76 | Required: False 77 | Position: Named 78 | Default value: None 79 | Accept pipeline input: False 80 | Accept wildcard characters: False 81 | ``` 82 | 83 | ### -Theme 84 | 85 | The VS Code theme file to use. This should be the full path to a VS Code theme file. 86 | 87 | ```yaml 88 | Type: String 89 | Parameter Sets: (All) 90 | Aliases: 91 | 92 | Required: False 93 | Position: Named 94 | Default value: None 95 | Accept pipeline input: False 96 | Accept wildcard characters: False 97 | ``` 98 | 99 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-module/tui-designer.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Terminal User Interface designer for PowerShell 3 | --- 4 | 5 | # Show-TUIDesigner 6 | 7 | {% hint style="info" %} 8 | The terminal user interface designer is now open source and included in its [own module. ](https://github.com/ironmansoftware/terminal-gui-designer) 9 | {% endhint %} 10 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-protect/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Audit and block PowerShell scripts on Windows. 3 | --- 4 | 5 | # PowerShell Protect 6 | 7 | {% hint style="danger" %} 8 | PowerShell Protect is now [open source](https://github.com/ironmansoftware/powershell-protect). 9 | {% endhint %} 10 | 11 | PowerShell Protect provides auditing and blocking support for Windows PowerShell and PowerShell on Windows 10 and Windows Server 2016 or later machines. 12 | 13 | PowerShell Protect integrates with the Antimalware Scan Interface to audit and block scripts before they execute. 14 | 15 | ![](<../../.gitbook/assets/image (65).png>) 16 | 17 | ### More Information 18 | 19 | * [Getting Started](getting-started.md) 20 | * [Download](https://www.powershellgallery.com/packages/PowerShellProtect) 21 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-protect/actions.md: -------------------------------------------------------------------------------- 1 | # Actions 2 | 3 | 4 | 5 | Actions are taken after particular rules' conditions are met. Actions are specified with the `New-PSPAction` cmdlet. 6 | 7 | ```powershell 8 | New-PSPAction -File -Path %temp%\test.txt -Format '{appname},{rule}' -Name 'File' 9 | ``` 10 | 11 | ## Action Types 12 | 13 | ### Block 14 | 15 | The block action with block users from executing scripts that match the assigned rule. 16 | 17 | ``` 18 | New-PSPAction -Block 19 | ``` 20 | 21 | **Parameters** 22 | 23 | | **Parameter** | Description | 24 | | ------------- | ---------------- | 25 | | Block | Enables blocking | 26 | 27 | ### File 28 | 29 | The file action will append to a file whenever a rule's conditions are satisfied. You will need to define the path and format for the file action. 30 | 31 | This example logs all the PowerShell engine application names to a file. 32 | 33 | ```powershell 34 | New-PSPAction -File -Path "%temp%\log.txt% -Format "{applicationName}" -Name "File" 35 | ``` 36 | 37 | #### Parameters 38 | 39 | | Parameter | Description | 40 | | --------- | ------------------------------------------------------------------ | 41 | | Path | Path to the file to write to. Environment variables are supported. | 42 | | Format | The formatting string used for writing the message. | 43 | | Name | The name of this action | 44 | 45 | ### TCP 46 | 47 | The TCP action connects to a TCP address and port to send a formatted TCP message. This is primarily used for SIEM integration. You will need to specify the hostname, port and format settings. The message is sent as an UTF8 encoded string to the address and port. 48 | 49 | This example sends the application name of the PowerShell engine to the machine `MYSIEM` on port `527`. 50 | 51 | ```powershell 52 | New-PSPAction -TCP -HostName "MYSIEM" -Port 527 -Format "{applicationName}" -Name "TCP" 53 | ``` 54 | 55 | #### Parameters 56 | 57 | | Parameter | Description | 58 | | --------- | ------------------------------------------------- | 59 | | HostName | The host name or address to send the message to | 60 | | Port | The port to send the message to | 61 | | Format | A formatting string for the format of the message | 62 | | Name | The name of this action | 63 | 64 | ### HTTP 65 | 66 | The HTTP action send HTTP requests to the configured URL using the specified format. The message is sent as a UTF8 encoded string. 67 | 68 | This example sends the application name of the PowerShell engine to an HTTP server. 69 | 70 | ```powershell 71 | New-PSPAction -TCP -Address "http://powershelluniversal:8080/protect" -Format "{applicationName}" -Nanme "HTTP" 72 | ``` 73 | 74 | #### Settings 75 | 76 | | Parameter | Description | 77 | | --------- | -------------------------------------------------- | 78 | | Address | The URL to send the HTTP request to. | 79 | | Format | A formatting string for the format of the message | 80 | | Name | The name of this action. | 81 | 82 | ### UDP 83 | 84 | Send UDP datagrams to a target hostname and port. You can use formatting strings. Messages are encoded in UTF8. 85 | 86 | This example sends the application name of the PowerShell engine to the machine `MYSIEM` on port `527`. 87 | 88 | ```powershell 89 | New-PSPAction -UDP -HostName "MYSIEM" -Port 527 -Format "{applicationName}" -Name "TCP" 90 | ``` 91 | 92 | #### Parameters 93 | 94 | | Parameter | Description | 95 | | --------- | ------------------------------------------------- | 96 | | HostName | The host name or address to send the message to | 97 | | Port | The port to send the message to | 98 | | Format | A formatting string for the format of the message | 99 | | Name | The name of this action | 100 | 101 | ## Formatting Strings 102 | 103 | You can use formatting strings to configure the output of the various audit actions (File, TCP, HTTP). You can use the following properties in your format strings. 104 | 105 | ### Properties 106 | 107 | | Property | Description | 108 | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | 109 | | Script | The complete script content. | 110 | | ContentPath | The path to the script if it was executed as a by path name. This will be an empty string if executed from the terminal. | 111 | | ApplicationName | The name of the application that ran PowerShell. This is typically a string with the format `PowerShell_path_version`. | 112 | | UserName | The username of the user that ran that command. | 113 | | ComputerName | The name of the computer running the command. | 114 | | Administrator | Whether the PowerShell process has administrative permissions. | 115 | | DomainName | The name of the user's domain running the command. | 116 | | Rule | The rule that triggered the action. | 117 | | TimeStamp | The UTC time stamp of the message. | 118 | 119 | ### Syntax 120 | 121 | The property name will be replaced by the value. Put the name of the property and brackets. 122 | 123 | ``` 124 | {timestamp}, {applicationName}, {rule} 125 | ``` 126 | 127 | ## Examples 128 | 129 | #### TCP to SIEM 130 | 131 | In this example we are logging any use of a command containing "webrequest" with a TCP request to a SIEM (such as Splunk) 132 | 133 | ```powershell 134 | $Condition = New-PSPCondition -Property "command" -contains -Value "webrequest" 135 | $Siem= New-PSPAction -File -Format "{applicationName},{rule},{UserName},{ComputerName},{ContentPath},{Administrator},{DomainName}" -HostName "12.34.45.67" -Port '514' -Name 'Siem' 136 | $Rule = New-PSPRule -Name "Web Request" -Condition $Condition -Action $Siem 137 | $Config = New-PSPConfiguration -Rule $Rule -Action -Action @($BlockAction, $FileAction) 138 | 139 | Test-PSPConfiguration -Configuration $Config -ScriptBlock { Invoke-WebRequest "https://www.ironmansoftware.com" } 140 | ``` 141 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-protect/configuration.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | Configuration of PowerShell Protect is done using XML. You can create the XML file in the following locations. 4 | 5 | ## Cmdlets 6 | 7 | You can use the configuration cmdlets to get, set and test your Protect configurations. 8 | 9 | ### Set-PSPConfiguration 10 | 11 | To set a configuration for the local machine, you can use `Set-PSPConfiguration`. You will need to provide a path to a Protect configuration file and then the destination of the configuration. 12 | 13 | The below will install the configuration file into the file system location. 14 | 15 | ```powershell 16 | Set-PSPConfiguration -ConfigurationFilePath .\config.xml -FileSystem 17 | ``` 18 | 19 | The below will install the configuration file into the registry. 20 | 21 | ```powershell 22 | Set-PSPConfiguration -ConfigurationFilePath .\config.xml -Registry 23 | ``` 24 | 25 | You can also pass a Configuration object created with `New-PSPConfiguration` to `Set-PSPConfiguration`. 26 | 27 | ```powershell 28 | $Config = New-PSPConfiguration #options 29 | Set-PSPConfiguration -Configuration $Config -Registry 30 | ``` 31 | 32 | ### Get-PSPConfiguration 33 | 34 | To return the current Protect configuration, use `Get-PSPConfiguration`. You will receive a configuration object or null if no configuration is installed. 35 | 36 | ```powershell 37 | Get-PSPConfiguration 38 | 39 | Rules Actions 40 | ----- ------- 41 | {Web Request} {File, Block} 42 | 43 | ``` 44 | 45 | ### Test-PSPConfiguration 46 | 47 | To test a configuration file before installing it, you can use `Test-PSPConfiguration`. This cmdlet will use the specified configuration file and evaluate the provided script block. The `Test-PSPConfiguration` cmdlet will return either `Ok` if the script will not be blocked and `AdminBlock` if the script will be blocked. Other actions, such as TCP or HTTP, will also be executed. 48 | 49 | ```powershell 50 | Test-PSPConfiguration -ConfigurationPath ".\config.xml" -ScriptBlock { Invoke-WebRequest } 51 | AdminBlock 52 | ``` 53 | 54 | ### Save-PSPConfiguration 55 | 56 | This cmdlet is used to save configuration files to disk. Specify the Configuration object and path. 57 | 58 | ```powershell 59 | $Config = New-PSPConfiguration #options 60 | Save-PSPConfiguration -Configuration $Config -Path .\myconfig.xml 61 | ``` 62 | 63 | ## ProgramData File 64 | 65 | You can create an XML file in `%ProgramData%\PowerShellProtect\config.xml` . You will need to set the proper permissions so the XML file is readonly. Any changes made to the XML file will automatically be reloaded by PowerShell Protect. 66 | 67 | ## Registry 68 | 69 | ### Registry Configuration File 70 | 71 | You can create an XML document and store it in the registry key `HKLM\Software\Ironman Software\PowerShell Protect` in the value `Configuration`. 72 | 73 | ### Registry Configuration Path 74 | 75 | You can also specify the path to an XML document by creating the registry key `HKLM\Software\Ironman Software\PowerShell Protect` and setting the value `ConfigurationFile` . This needs to be the full path to the file. Environment variables will be expanded. 76 | 77 | ## Precedence 78 | 79 | Configuration methods are loaded by precedence. Options higher in the precedence will be checked first. If a configuration file exists in that location, it will be loaded first and the subsequent locations will not be loaded. 80 | 81 | 1. Registry Configuration File 82 | 2. Registry Configuration Path 83 | 3. ProgramData File 84 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-protect/getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Getting started with PowerShell Protect. 3 | --- 4 | 5 | # Getting Started 6 | 7 | {% embed url="https://www.youtube.com/watch?v=ocYtcaeWiQQ" %} 8 | 9 | PowerShell Protect can be installed from the PowerShell Gallery. 10 | 11 | ```powershell 12 | Install-Module PowerShellProtect 13 | ``` 14 | 15 | To install the AMSI provider that is used to audit and block scripts, you will need to run the following command. 16 | 17 | {% hint style="info" %} 18 | This command needs to be run as administrator. 19 | {% endhint %} 20 | 21 | ```powershell 22 | Install-PowerShellProtect 23 | $Configuration = New-PSPConfiguration 24 | Set-PSPConfiguration -Configuration $Configuration -FileSystem -License '' 25 | ``` 26 | 27 | Once installed, the [Default Rules](rules.md#default-rules) will be enabled. You can also enable additional rules using the PowerShell Protect configuration cmdlets. 28 | 29 | {% hint style="info" %} 30 | A license is required to configure your own rules. The built-in rules can be used for free without a license. 31 | {% endhint %} 32 | 33 | For example, this configuration will block and audit any script that contains a command with `webrequest` in the name. 34 | 35 | ```powershell 36 | $Condition = New-PSPCondition -Property "command" -contains -Value "webrequest" 37 | $BlockAction = New-PSPAction -Block 38 | $FileAction = New-PSPAction -File -Format "{applicationName},{rule}" -Path "%temp%\audit.csv" -Name 'File' 39 | $Rule = New-PSPRule -Name "Web Request" -Condition $Condition -Action @($BlockAction, $FileAction) 40 | 41 | $Configuration = New-PSPConfiguration -Rule $Rule -Action @($BlockAction, $FileAction) 42 | Set-PSPConfiguration -Configuration $Configuration -FileSystem -License '' 43 | ``` 44 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/powershell-protect/installation.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Installation information for PowerShell Protect. 3 | --- 4 | 5 | # Installation 6 | 7 | PowerShell Protect is distributed as a PowerShell module. You can install it from the PowerShell Gallery. 8 | 9 | ## Install 10 | 11 | You can install PowerShell Protect by installing the module and then installing the PowerShell Protect provider using `Install-PowerShellProtect`. You will need to run this action as a local administrator. 12 | 13 | ```powershell 14 | Install-Module 'PowerShellProtect' 15 | Install-PowerShellProtect 16 | ``` 17 | 18 | ## Uninstall 19 | 20 | You can uninstall the PowerShell Protect provider by using `Uninstall-PowerShellProtect`. You will need to run this action as a local administrator. 21 | 22 | ```powershell 23 | Uninstall-PowerShellProtect 24 | ``` 25 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/rest-apis.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved. ](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/rest-apis.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard.md: -------------------------------------------------------------------------------- 1 | # About Universal Dashboard 2 | 3 | The PowerShell Pro Tools Universal Dashboard PowerShell module allows for creation of web-based dashboards. The client and server side code for the dashboard is authored all PowerShell. Charts, monitors, tables and grids can easily be created with the cmdlets included with the module.The module is cross-platform and will run anywhere PowerShell Core can run. 4 | 5 | `Install-Module UniversalDashboard` 6 | 7 | ![](/assets/universal-dashboard-screenshot.png) 8 | 9 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/charts.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved.](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/charts.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/creating-a-dashboard.md: -------------------------------------------------------------------------------- 1 | # Creating a Dashboard 2 | 3 | Dashboards are authored using the UniversalDashboard PowerShell module. To create a new dashboard, you use the New-Dashboard cmdlet. This cmdlet will determine the color and title for the dashboard along with all the controls that will be shown on the dashboard. 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/formatting.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved.](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/formatting.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/grids.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved.](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/grids.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/monitors.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved. ](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/monitors.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/multi-page-dashboards.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved.](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/multi-page-dashboards.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/running-dashboards.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved.](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/running-dashboards.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/universal-dashboard/tables.md: -------------------------------------------------------------------------------- 1 | # [This documentation has moved. ](https://adamdriscoll.gitbooks.io/powershell-universal-dashboard/content/tables.html) 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/README.md: -------------------------------------------------------------------------------- 1 | # Visual Studio Code 2 | 3 | The [PowerShell Pro Tools extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ironmansoftware.powershellprotools) provides integration with the PowerShell Pro Tools module and supplies additional enhancements to the PowerShell experience in VS Code. 4 | 5 | The primary features include 6 | 7 | * Script Packaging 8 | * Windows Form Designer 9 | * Variable Explorer 10 | * Form Generator 11 | * One-Click Attach 12 | * Code Conversion 13 | * Profiling 14 | * RapidSense 15 | 16 | PowerShell Pro Tools provides an activity bar icon to access many of the tools. 17 | 18 | ![](<../../.gitbook/assets/image (35).png>) 19 | 20 | Within the activity bar, you'll find tools like the AST explorer, the module explorer and the variable explorer. 21 | 22 | ![](<../../.gitbook/assets/image (36).png>) 23 | 24 | {% hint style="info" %} 25 | Features available from the right-click Context Menu (e.g. Refactoring) require that the PowerShell script being edited is not in an unsaved state. 26 | {% endhint %} 27 | 28 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/automating-visual-studio-code.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Automate Visual Studio Code with PowerShell 3 | --- 4 | 5 | # Automating Visual Studio Code 6 | 7 | ## Overview 8 | 9 | Using PowerShell Pro Tools for Visual Studio Code you can automate the editor itself. This allows you to script repetitive actions you may take within Visual Studio Code. You can edit documents, show information and more. 10 | 11 | ## Getting Started 12 | 13 | To automate Visual Studio Code, you will need to first import the PowerShell Pro Tools VS Code module. 14 | 15 | ``` 16 | PS C:\> Import-Module PowerSHellProTools.VSCode 17 | ``` 18 | 19 | Once the module is loaded, you can begin running commands. 20 | 21 | ``` 22 | PS C:\> Get-VSCodeTerminal 23 | 24 | 25 | Name : pwsh 26 | Id : 1 27 | Columns : 0 28 | Rows : 0 29 | CreationOptions : - C:\Program Files\PowerShell\7\pwsh.exe 30 | 31 | Name : PowerShell Integrated Console 32 | Id : 2 33 | Columns : 140 34 | Rows : 13 35 | CreationOptions : PowerShell Integrated Console - C:\Program Files\PowerShell\7\pwsh.exe 36 | ``` 37 | 38 | ## Available Commands 39 | 40 | **Opening Documents** 41 | 42 | Open documents by file name. 43 | 44 | ``` 45 | PS C:\> Open-VSCodeTextDocument -FileName .\form.designer.ps1 46 | ``` 47 | 48 | **Closing Text Editors** 49 | 50 | Close editors that are already open. 51 | 52 | ``` 53 | PS C:\> Get-VSCodeTextEditor | Remove-VSCodeTextEditor 54 | ``` 55 | 56 | **Getting Document Text** 57 | 58 | Get the text of a document. You can also pass in a range to select only a partial section of the text. 59 | 60 | ``` 61 | PS C:\> Get-VSCodeTextDocument | Get-VSCodeTextDocumentText 62 | ``` 63 | 64 | **Inserting Text** 65 | 66 | Inserts text into a particular position in the selected document. This creates an edit but does not save the file. 67 | 68 | ``` 69 | PS C:\> $position = New-VSCodePosition -Line 0 -Character 2 70 | PS C:\> Get-VSCodeTextDocument | Add-VSCodeTextDocumentText -Position $position -Text NewText 71 | ``` 72 | 73 | **Removing Text** 74 | 75 | Removes a range of text from a document. This creates an edit but does not save the file. 76 | 77 | ``` 78 | PS C:\> $Range = New-VSCodeRange -StartLine 0 -EndLine 0 -StartCharacter 0 -EndCharacter 10 79 | PS C:\> Get-VSCodeTextDocument | Remove-VSCodeTextDocumentText -Range $Range 80 | ``` 81 | 82 | **Setting Text Decorations** 83 | 84 | Decorates a range of text with an optional set of colors, outlines, borders, and text. 85 | 86 | ``` 87 | PS C:\> $Range = New-VSCodeRange -StartLine 0 -EndLine 0 -StartCharacter 0 -EndCharacter 55 88 | PS C:\> Get-VSCodeTextEditor | Set-VSCodeTextEditorDecoration -BackgroundColor 'descriptionForeground' -Range $Range -Key 12321 -FontWeight bold 89 | ``` 90 | 91 | You can clear decorations by using the Clear-VSCodeTextEditorDecoration cmdlet. If you want to only clear a single decoration, you can specify the key. 92 | 93 | [![](https://i1.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/decoration.png?resize=669%2C155\&ssl=1)](https://i1.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/decoration.png?ssl=1) 94 | 95 | **Sending Text to a Terminal** 96 | 97 | Sends text to the specified terminal. You can commit this text by including the -AddNewLine parameter. 98 | 99 | ``` 100 | PS C:\> Get-VSCodeTerminal | Where-Object Name -eq 'PowerShell Integrated Console' | Send-VSCodeTerminalText -Text 'Write-Host "Hello World!"' 101 | ``` 102 | 103 | [![](https://i2.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/sendtext.png?resize=1260%2C82\&ssl=1)](https://i2.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/sendtext.png?ssl=1) 104 | 105 | **Showing Messages** 106 | 107 | Show a message to the user. You can show information, warning, and error messages. 108 | 109 | ``` 110 | PS C:\> Show-VSCodeMessage -Message 'Error!!!' -Type Error 111 | ``` 112 | 113 | [![](https://i2.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/error.png?resize=609%2C89\&ssl=1)](https://i2.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/error.png?ssl=1) 114 | 115 | **Showing a Message with a Response** 116 | 117 | Show a message to the user and provide an option for them to select. 118 | 119 | ``` 120 | PS C:\> Show-VSCodeMessage -Message 'What should we do?' -Items @('Party', 'Sleep') 121 | ``` 122 | 123 | [![](https://i0.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/showmessagewithoptions.png?resize=589%2C129\&ssl=1)](https://i0.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/showmessagewithoptions.png?ssl=1) 124 | 125 | **Showing a Quick Pick List** 126 | 127 | Shows a quick pick list for a user to select items from. This cmdlet will return the user’s selection to PowerShell. 128 | 129 | ``` 130 | PS C:\> Show-VSCodeQuickPick -PlaceHolder 'What should we do?' -Items @('Party', 'Sleep') 131 | ``` 132 | 133 | [![](https://i0.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/quicklist.png?resize=800%2C166\&ssl=1)](https://i0.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/quicklist.png?ssl=1) 134 | 135 | **Showing an Input Box** 136 | 137 | Shows an input box for the user to enter arbitrary text. This cmdlet will return the result to PowerShell. 138 | 139 | ``` 140 | PS C:\> Show-VSCodeInputBox -PlaceHolder 'Enter some text' 141 | ``` 142 | 143 | [![](https://i1.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/inputbox.png?resize=815%2C124\&ssl=1)](https://i1.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/inputbox.png?ssl=1) 144 | 145 | **Set Status Bar Message** 146 | 147 | Sets the status bar message. 148 | 149 | ``` 150 | PS C:\> Set-VSCodeStatusBarMessage -Message 'Hellllloooo' 151 | ``` 152 | 153 | [![](https://i0.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/statusbar.png?resize=797%2C100\&ssl=1)](https://i0.wp.com/ironmansoftware.com/wp-content/uploads/2020/04/statusbar.png?ssl=1) 154 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/code-conversion.md: -------------------------------------------------------------------------------- 1 | # Code Conversion 2 | 3 | {% hint style="warning" %} 4 | Code Conversion is no longer supported with PowerShell Pro Tools. It is still available as an [open-source project](https://github.com/ironmansoftware/code-conversion). 5 | {% endhint %} 6 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/debugging/README.md: -------------------------------------------------------------------------------- 1 | # Debugging 2 | 3 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/debugging/one-click-attach.md: -------------------------------------------------------------------------------- 1 | # One-Click Attach 2 | 3 | Within the PowerShell Pro Tools action panel, you can expand the Host Processes node to view processes that are running PowerShell on your machine. If you expand the processes you will see the runspaces that are currently allocated within that process. You can then click the Attach Runspace command to attach the debugger to the selected runspace. 4 | 5 | {% embed url="https://youtu.be/mZo12kq-92c" %} 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/debugging/start-in-new-terminal.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Information about the run in new terminal command. 3 | --- 4 | 5 | # Run in New Terminal 6 | 7 | When working with PowerShell scripts, you may want to run the current script in a new terminal rather than the existing PowerShell session. You can do so by clicking the Run in New Terminal button. This will execute the PowerShell script in a new PowerShell process and open the terminal in Visual Studio Code. You can also use the default key binding `Shift+F5` to start scripts in a new terminal. 8 | 9 | ![](../../../.gitbook/assets/new-terminal.gif) 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/decompiler.md: -------------------------------------------------------------------------------- 1 | # Decompiler 2 | 3 | The decompiler allows you to view the source code for C\# types that are loaded within your PowerShell process. This can be helpful to understand how types and cmdlets work. 4 | 5 | You can access the decompiler by using the Reflection section of the PowerShell explorer. Navigate to a type and click the Decompile Type button. A text editor will open with the decompiled source code. 6 | 7 | ![](../../.gitbook/assets/decompiler.gif) 8 | 9 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/diagnostics.md: -------------------------------------------------------------------------------- 1 | # Diagnostics 2 | 3 | If you are having any issues with PowerShell Pro Tools for Visual Studio Code, you can view the log within the Output tab. Select the PowerShell Pro Tools Output Channel to view log information about PoshTools. 4 | 5 | ![Output Channel for PowerShell Pro Tools](../../.gitbook/assets/image%20%2827%29.png) 6 | 7 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/enhanced-hover.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Enhanced hover support 3 | --- 4 | 5 | # Enhanced Hover 6 | 7 | Enhanced hover support provides additional information about details within the script you are hovering. You can simply hover your mouse over aspects of your script to view information about it. 8 | 9 | ## AST Type Hover 10 | 11 | When you hover over portions of a PowerShell script, the AST Type will be shown. 12 | 13 | ![AST Type Hover](../../.gitbook/assets/image%20%2859%29.png) 14 | 15 | ## Variable Value and Type Hover 16 | 17 | When you hover over a variable that has been assigned, you will be shown the value and type. 18 | 19 | ![Variable value and type hover](../../.gitbook/assets/image%20%2858%29.png) 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/generate-a-tool-from-a-function.md: -------------------------------------------------------------------------------- 1 | # Generate a Tool from a Function 2 | 3 | Using the `PowerShell Pro Tools: Generate Tool` command you can generate a WinForm and then compile it into an executable in one step. It uses the same concept as the Generate a UI from a function and the PoshTools packager to create the tool. 4 | 5 | Press `Ctrl+Shift+P` to open the command pallete and search for the command. You will need to have a PS1 file open with a single function in it that defines the parameters for the tool you'd like to create. 6 | 7 | For example, you could have a new user function like this. 8 | 9 | ``` 10 | function New-User { 11 | param([String]$UserName, [Switch]$Enabled, [ValidateSet("Administrator", "IT", "HR")]$Department) 12 | } 13 | ``` 14 | 15 | This would generate a form that looked like this. 16 | 17 | ![Auto-generated UI](<../../.gitbook/assets/image (5) (1).png>) 18 | 19 | If the file was named `NewUser.ps1` , then a `NewUser.exe` would be created that would show the form and execute your tool. 20 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/generating-a-ui-from-a-function.md: -------------------------------------------------------------------------------- 1 | # Generating a UI from a function 2 | 3 | With the PowerShell Pro Tools VS Code extension, you can convert a PowerShell function into a Windows Form app without using the form designer at all. To this, you'll want to start with a PS1 file with a single function defined within it. 4 | 5 | ``` 6 | function New-User { 7 | param([String]$UserName, [Switch]$Enabled, [ValidateSet("Administrator", "IT", "HR")]$Department) 8 | } 9 | ``` 10 | 11 | In VS Code, open the PS1 file you'd like to make a UI out of. Then open the command palette with `Ctrl+Shift+P` and search for `PowerShell: Generate Windows Form`. 12 | 13 | Once you select that, two new files will be created. One will include `form.ps1` and another will include `form.designer.ps1`. 14 | 15 | If you execute the `form.ps1` file, your UI will be shown. 16 | 17 | ![Auto-generated UI](<../../.gitbook/assets/image (5) (1).png>) 18 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/packaging-in-visual-studio-code.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Information about compiling PowerShell Scripts into executables with VS Code. 3 | --- 4 | 5 | # Packaging in Visual Studio Code 6 | 7 | PowerShell Pro Tools provides an [extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ironmansoftware.powershellprotools). PowerShell Pro Tools takes advantage of the package.psd1 file to configure packaging for scripts within VS Code. 8 | 9 | ## Requirements for Packaging 10 | 11 | * PowerShell Pro Tools Visual Studio Code Extension 12 | * .NET Core SDK 2.0 or later 13 | 14 | ## Compiling a Script 15 | 16 | To compile a script into an executable, open a PS1 file. In the top right of the toolbar, you will find a Package Script as Exe button. Clicking this button will start the packaging process. 17 | 18 | ![Package Script as Exe Button](<../../.gitbook/assets/image (44).png>) 19 | 20 | 21 | 22 | If this is the first time you have clicked the button, a `package.psd1` file will be created in the current workspace's root. So for example, if you have the folder `C:\src\scripts` open in Visual Studio Code, the file `C:\src\scripts\package.psd1` will be created. 23 | 24 | Next, the packaging process will start. The PowerShell Pro Tools Output Pane will be activated and will display log information about the packaging process. 25 | 26 | ![](<../../.gitbook/assets/image (43).png>) 27 | 28 | ## Configuration Packaging 29 | 30 | To configure packaging, you can change settings within the generated `package.psd1` file. You can learn more about the syntax of the file by [clicking here](../packaging/package.psd1.md). 31 | 32 | The default configuration will look something like this. 33 | 34 | ``` 35 | @{ 36 | Root = 'c:\Users\adamr\Desktop\test\test\test.ps1' 37 | OutputPath = 'c:\Users\adamr\Desktop\test\out' 38 | Package = @{ 39 | Enabled = $true 40 | Obfuscate = $false 41 | HideConsoleWindow = $false 42 | DotNetVersion = 'v4.6.2' 43 | FileVersion = '1.0.0' 44 | FileDescription = '' 45 | ProductName = '' 46 | ProductVersion = '' 47 | Copyright = '' 48 | RequireElevation = $false 49 | ApplicationIconPath = '' 50 | PackageType = 'Console' 51 | } 52 | Bundle = @{ 53 | Enabled = $true 54 | Modules = $true 55 | # IgnoredModules = @() 56 | } 57 | } 58 | ``` 59 | 60 | ### Root Package.psd1 61 | 62 | The root `package.psd1` file is generated at the root of the current workspace folder. Here's an example of a file structure with a root `package.psd1` file. Clicking Package Script as Exe on an script will use this `package.psd1` file. 63 | 64 | ![](<../../.gitbook/assets/image (42).png>) 65 | 66 | ### Scoped Package.psd1 67 | 68 | You can also include the `package.psd1` file in a particular folder. When packaging scripts in that folder, the scoped `package.psd1` file will be used. 69 | 70 | Take the following folder structure for example. 71 | 72 | ![](<../../.gitbook/assets/image (40).png>) 73 | 74 | When packaging the `test\test.ps1` file, the `test\package.psd1` will be used to package the script. When packaging the `test2\test2.ps1` file, the `test\package.psd1` file will be used. The root `package.psd1` will used when packaging `test3\test3.ps1` because that folder does not have a scoped package config file. 75 | 76 | ### Package.psd1 template 77 | 78 | You can set the package.psd1 template that is used to create the default package.psd1 by setting the path to the file within your settings. 79 | 80 | ![](<../../.gitbook/assets/image (22).png>) 81 | 82 | You can use two replacement variables that will be set when the file is created. 83 | 84 | **$root** - Replaced by the path to the PS1 file being packaged 85 | 86 | **$outputPath** - Path to the directory to output to. 87 | 88 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/pin-session.md: -------------------------------------------------------------------------------- 1 | # Pin Session 2 | 3 | Using the `Pin Session` command you can pin a particular document to a particular session. Any time you switch to that document, that session will be used. 4 | 5 | To pin a session to a document, open the document you wish to pin and press `Ctrl+Shift+P` and search for Pin Session. A list of sessions will be displayed. Select the session to pin. Any time you switch to that tab, that session will be used. You can unpin a session with `Unpin Session`. 6 | 7 | ![](../../.gitbook/assets/pinsession.gif) 8 | 9 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/powershell-explorer.md: -------------------------------------------------------------------------------- 1 | # PowerShell Explorer 2 | 3 | The PowerShell Explorer allows you to view the AST, Modules and Providers in your PowerShell Environment. 4 | 5 | ![Viewing the PowerShell Explorer Window](../../.gitbook/assets/image%20%2813%29.png) 6 | 7 | ## AST Explorer 8 | 9 | You can explore the AST of the current PowerShell file by using the AST node in the PowerShell Explorer. Open a PS1 or PSM1 file and click the refresh button. The AST node will show which file the AST is currently showing. You can then click the nodes within the AST. Click the Select AST button to highlight the text in the editor that relates to that AST node. 10 | 11 | ![Selecting an AST Node](../../.gitbook/assets/show-ast.PNG) 12 | 13 | If you want to clear the AST node selection, click the Clear Selection button. 14 | 15 | ![Clear the AST Selection](../../.gitbook/assets/clear-ast.PNG) 16 | 17 | ## Custom Tree View 18 | 19 | The custom tree view allows you to define your own tree views with custom items. Items can have children and support invocation which can call any cmdlet you'd like. You can also integrate with the [VS Code cmdlets](automating-visual-studio-code.md). 20 | 21 | The following example creates a tree view named test that creates nested tree items. When each item is clicked, it will display a VS Code message. 22 | 23 | ```text 24 | Register-VSCodeTreeView -Label 'Test' -LoadChildren { 25 | 1..10 | % { New-VSCodeTreeItem -Label "Test$_" -Icon 'archive' -HasChildren } 26 | } -Icon 'account' -InvokeChild { 27 | Show-VSCodeMessage -Message $args[0].Path 28 | } 29 | ``` 30 | 31 | ![](../../.gitbook/assets/customtreeview.gif) 32 | 33 | This example creates a tree view of GitHub repositories and opens then when clicked. 34 | 35 | ```text 36 | Register-VSCodeTreeView -Label 'GitHub' -LoadChildren { 37 | New-VSCodeTreeItem -Label 'PowerShell Universal' -Description 'https://github.com/ironmansoftware/powershell-universal' -Icon 'github-inverted' 38 | New-VSCodeTreeItem -Label 'Issues' -Description 'https://github.com/ironmansoftware/issues' -Icon 'github-inverted' 39 | New-VSCodeTreeItem -Label 'PowerShell' -Description 'https://github.com/powershell/powershell' -Icon 'github-inverted' 40 | } -Icon 'github' -InvokeChild { 41 | Start-Process $args[0].Description 42 | } 43 | ``` 44 | 45 | ## Host Process Explorer 46 | 47 | The host process explorer lets you view processes running PowerShell on your machine. You can click the Attach button to use the [One-Click Attach](debugging/one-click-attach.md) feature. 48 | 49 | ![](../../.gitbook/assets/image%20%2857%29.png) 50 | 51 | ## History Explorer 52 | 53 | View the history from PSReadline and insert it into the PowerShell Integrated terminal 54 | 55 | ![](../../.gitbook/assets/image%20%287%29.png) 56 | 57 | ## Jobs Explorer 58 | 59 | The Jobs explorer displays the status of jobs within your PowerShell session. You can stop, receive, debug and remove jobs. 60 | 61 | ![](../../.gitbook/assets/image%20%2868%29.png) 62 | 63 | ## Modules Explorer 64 | 65 | The Module Explorer node provides the ability to view modules within your PowerShell environment. It will list all the modules and their versions directly in the tree view. If there is an updated version of a module, the update icon will be available and a description on the node will state the updated version that is available on the gallery. You can click the update button to update that module. 66 | 67 | ![Module Explorer in VS Code](../../.gitbook/assets/modules.PNG) 68 | 69 | ## Provider Explorer 70 | 71 | You can use the PowerShell Provider Explorer in the PowerShell Explorer window to traverse providers in your environment. 72 | 73 | ![](../../.gitbook/assets/providers.PNG) 74 | 75 | ### Insert Selected Item Paths into Scripts 76 | 77 | You can insert selected item paths into scripts using the Insert Path command. 78 | 79 | ![Insert Provider Path](../../.gitbook/assets/insert-path.gif) 80 | 81 | ### View Item Properties 82 | 83 | You can view the properties of a container or item by using the View Item Properties command. 84 | 85 | ![](../../.gitbook/assets/get-itemproperties.gif) 86 | 87 | ### View Child Items 88 | 89 | You can view child items in a grid by using the View Items command on containers. 90 | 91 | ![](../../.gitbook/assets/get-childitem.gif) 92 | 93 | ## Reflection Explorer 94 | 95 | The reflection explorer allows you to view assemblies, types, and members of those types within the side panel. 96 | 97 | ![](../../.gitbook/assets/image%20%2867%29.png) 98 | 99 | ## Session Explorer 100 | 101 | The session explorer allows you to view active PSSessions in your environment. You can connect, disconnect and remove sessions from the session explorer. 102 | 103 | ![](../../.gitbook/assets/image%20%2847%29.png) 104 | 105 | 106 | 107 | ## Variable Explorer 108 | 109 | The Variable Explorer allows you to see variables defined in your session without being in the debugger. You can expand and view their properties. Clicking the refresh button will refresh the variable list. 110 | 111 | ![Variable Explorer](../../.gitbook/assets/variables.png) 112 | 113 | ### Insert Variables into Scripts 114 | 115 | You can insert selected variables into scripts using the Insert Variable button. 116 | 117 | ![](../../.gitbook/assets/image%20%2855%29.png) 118 | 119 | Selecting nested properties will insert the path to the property into the script. 120 | 121 | ![](../../.gitbook/assets/insert-variable.gif) 122 | 123 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/profiler.md: -------------------------------------------------------------------------------- 1 | # Profiler 2 | 3 | PowerShell Pro Tools offers a script performance profiler to time the execution of your script. It helps to locate slow sections of code and provides the number of times particular lines are called. 4 | 5 | The feature is best defined as an instrumentation profiler that injects cmdlet calls into your script to thoroughly analyze your script. The script is executed with this injected code to accurately time the pipelines within your script. 6 | 7 | {% embed url="https://youtu.be/9DkxJ78C5ks" %} 8 | 9 | 10 | 11 | ## Profiling a Script 12 | 13 | To profile a script, open the script you wish to profile and execute the `PowerShell: Profile Script` command from within VS Code \(Ctrl+Shift+P\). The script will be instrumented and then executed within the VS Code PowerShell Session. After execution is complete, script timings will be added directly to the editor on the lines in which they were recorded. 14 | 15 | ![Profiler information](../../.gitbook/assets/image%20%2812%29.png) 16 | 17 | The profile information will remain in the editor until you execute the `PowerShell: Clear Profiling Information` command in VS Code. 18 | 19 | ### Limitations 20 | 21 | Being an early version of the profiler, there are some limitations. 22 | 23 | #### **Single Script Support** 24 | 25 | The profiler only profiles the current script. It will not profile scripts or modules that you reference. If you use functions within pipelines in your profiled script, those functions will be timed but their internal operations will not. 26 | 27 | **Hot Path Support** 28 | 29 | Although the hot path information is available in the output from the profiler, there is no visual representation of this information. 30 | 31 | #### Pipeline Element Timing 32 | 33 | The profiler has early support for pipeline element timing but does not expose this in this version. For example, a pipeline like the one below will result in a single timing even though multiple commands are being called. 34 | 35 | ```text 36 | Get-Process | Select-Object Name | Out-String 40.85% (1 calls) 37 | ``` 38 | 39 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/quick-scripts.md: -------------------------------------------------------------------------------- 1 | # Quick Scripts 2 | 3 | Quick Scripts allow you to save and quickly access scripts that are stored anywhere on your machine. The scripts are stored across workspaces so whenever you open VS Code, you'll have access to the scripts. Quick scripts are listed in the PowerShell Explorer window. 4 | 5 | ![](../../.gitbook/assets/quick-script-list.png) 6 | 7 | ## Adding Quick Scripts 8 | 9 | Quick Scripts can be added by issuing the Add Quick Script command or clicking the Add Quick Script button in the editor. In either case, it will add the current file to Quick Scripts. 10 | 11 | ![](../../.gitbook/assets/add-quick-script.PNG) 12 | 13 | After issuing the command or clicking the button, you will have to enter a short name for the Quick Script. 14 | 15 | ![](../../.gitbook/assets/add-quick-script-name.PNG) 16 | 17 | ## Opening Quick Scripts 18 | 19 | You can either open a Quick Script by click the button in the PowerShell Explorer window or by issuing the Open Quick Script command. When issuing the command, you'll have to enter the name of the Quick Script. 20 | 21 | ![](../../.gitbook/assets/enter-quick-script-name.PNG) 22 | 23 | ## Removing Quick Scripts 24 | 25 | You can remove quick scripts by clicking the Trash icon in the PowerShell Explorer window. 26 | 27 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/rapidsense.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: High performance statement completion. 3 | --- 4 | 5 | # RapidSense 6 | 7 | ![RapidSense](../../.gitbook/assets/rapidsense\_small.png) 8 | 9 | RapidSense is an alternative to the default PowerShell IntelliSense that provides high performance, customizable statement completion. It aggressively caches PowerShell elements to provide to the best performance possible. It sacrifices some of the features of IntelliSense to provide this performance but aims to provide the most common statement completion suggestions. You can quickly toggle between IntelliSense and RapidSense. 10 | 11 | RapidSense works with Windows PowerShell and PowerShell 7. 12 | 13 | {% embed url="https://youtu.be/rIp6VPh91h0" %} 14 | 15 | 16 | 17 | ## Enabling RapidSense 18 | 19 | To enable RapidSense, click the IntelliSense button on the status bar. 20 | 21 | ![](<../../.gitbook/assets/image (48).png>) 22 | 23 | After clicking the IntelliSense button, it will toggle to RapidSense. RapidSense will begin the caching problem. It should only take a couple of seconds. 24 | 25 | ![](<../../.gitbook/assets/image (53).png>) 26 | 27 | ## Using RapidSense 28 | 29 | ![](<../../.gitbook/assets/image (50).png>) 30 | 31 | RapidSense works the same as IntelliSense. As you begin typing, it will suggest commands, parameters, variables, properties, methods, paths and types. RapidSense currently does not complete static members, classes, or attributes. 32 | 33 | RapidSense triggers on on the following characters: 34 | 35 | ``` 36 | , 37 | . 38 | - 39 | [ 40 | \ 41 | ``` 42 | 43 | When a trigger character is pressed the standard statement completion UI will be shown. 44 | 45 | ![](<../../.gitbook/assets/image (47) (1) (1).png>) 46 | 47 | ## Configuring RapidSense 48 | 49 | RapidSense can be configured to ignore certain assemblies, types, modules and commands. You can change these settings in the VS Code settings UI. 50 | 51 | For each of the ignored elements, you can define an array and separate them with semicolons. Each segment is treated as a regular expression. 52 | 53 | For example, if you wanted to prevent cmdlets in the `ActiveDirectory` module from showing in RapidSense, add the following to the Ignored Modules setting. 54 | 55 | ``` 56 | ActiveDirectory 57 | ``` 58 | 59 | If you wanted to exclude all `System` assemblies from type completion. You could add a regular expression to the Ignore Assemblies setting. 60 | 61 | ``` 62 | System.* 63 | ``` 64 | 65 | You can still use these commands in your scripts but they will not be suggested to you are you type. Ignoring elements improves performance because they are not included in the cache at all. Including many ignored elements may reduce performance of the recaching process as it need to process additional regular expressions across the elements. Recaching happens after executing the debugger. 66 | 67 | ### Available Settings 68 | 69 | **Ignored Assemblies** - Ignore types in certain assemblies \ 70 | **Ignored Types** - Ignore specific types\ 71 | **Ignore Modules** - Ignore commands found in certain modules\ 72 | **Ignore Commands** - Ignore specific commands\ 73 | **Ignore Variables** - Ignore specific variables. 74 | 75 | ## Disabling RapidSense 76 | 77 | You can toggle back to standard IntelliSense by click the RapidSense button in the status bar. RapidSense caches will not be recached when RapidSense is disabled. 78 | 79 | ![](<../../.gitbook/assets/image (52).png>) 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/refactoring.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Refactoring commands for VS Code. 3 | --- 4 | 5 | # Refactoring 6 | 7 | ## About 8 | 9 | Refactorings allow you to change or generate code based on the code you have. You will find a list of refactors below. You can invoke a refactor by invoke the Refactor command or by pressing the key binding `Ctrl+Alt+R` . 10 | 11 | Only valid refactors will be returned in the drop down menu. 12 | 13 | ## Convert to $\_ 14 | 15 | This refactoring converts a `$PSItem` variable to the `$_` variable. 16 | 17 | ![Convert to $\_](../../.gitbook/assets/converttodollarunder.gif) 18 | 19 | ## Convert to $PSItem 20 | 21 | Converts a reference to the `$_` variable to `$PSItem`. 22 | 23 | ![Convert to $PSItem](../../.gitbook/assets/converttopsitem.gif) 24 | 25 | ## Convert to Multiline Command 26 | 27 | Converts a command invocation into a multi-line command. Each parameter and argument is broken up with backticks. 28 | 29 | ![](../../.gitbook/assets/multi-line.gif) 30 | 31 | ## Convert to Splat 32 | 33 | Converts a command invocation into a splatting expression and creates a hashtable named `$Parameters` and then passes that hashtable as a splatting expression to the command. Positional arguments are not added to the hashtable. 34 | 35 | ![Convert to Splat](../../.gitbook/assets/convert-to-splat.gif) 36 | 37 | ## Export Module Member 38 | 39 | Exports the selected variable or function from a module using `Export-ModuleMember`. 40 | 41 | ![Export Module Member](../../.gitbook/assets/export-module-member.gif) 42 | 43 | ## Extract Function 44 | 45 | You can use the Extract Function refactor to convert a section of code into a function. It will analyze the selected block and determine if there are variables that should be added as parameters. These variables will be added to the `param` block. 46 | 47 | ![Extract Function](../../.gitbook/assets/export-function.gif) 48 | 49 | ## Extract Selection to File 50 | 51 | You can use the Extract Selection to File refactor to create a new file based on the selection in the current active editor. 52 | 53 | ![Extract Selection to File](../../.gitbook/assets/extract-file%20%281%29.gif) 54 | 55 | ## Generate Function from Usage 56 | 57 | You can generate a function based on a command example. This refactoring will analyze the parameters, arguments and whether the command is used in a pipeline. If used in a pipeline, this refactoring will generate an advanced function. 58 | 59 | ![Generate Function from Usage](../../.gitbook/assets/generate-function.gif) 60 | 61 | ## Generate Proxy Function 62 | 63 | Proxy functions allow you to extend existing functions with new parameters and functionality. You can select a command that you use within your script and select the Generate Proxy Function refactoring to have it generate the proxy function code for you. 64 | 65 | ![Generate Proxy Function](../../.gitbook/assets/proxy.gif) 66 | 67 | ## Introduce Using Namespace 68 | 69 | The introduce using namespace refactoring adds a `using namespace` statement to the top of a script and replaces the selected type expression with the namespace removed. 70 | 71 | ![Introduce Using Namespace](../../.gitbook/assets/introduce-using.gif) 72 | 73 | ## Reorder Parameters 74 | 75 | You can reorder parameters by using the `Ctrl+PageUp` and `Ctrl+PageDown` key bindings. Ensure that your cursor is on top of a parameter for a command. Press one of the key bindings. To move a parameter to the right, use Page Up. To move a parameter to the left, use Page Down. 76 | 77 | ![Reorder Parameters](../../.gitbook/assets/move-parameters.gif) 78 | 79 | ## Split Pipeline 80 | 81 | The split pipe refactoring will split a pipe into multiple lines. Each element in the pipe is stored in a variable and passed to the next item in the pipe. This can be useful for debugging long or complex pipeline operations. 82 | 83 | ![Split pipeline](../../.gitbook/assets/split-pipe.gif) 84 | 85 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/rename-symbols.md: -------------------------------------------------------------------------------- 1 | # Rename Symbols 2 | 3 | You can press F2 on variables within Visual Studio Code to rename them across the workspace or function you are working in. 4 | 5 | ## Variables 6 | 7 | ### Global Scope 8 | 9 | Renaming variables that appear at the top level scope will rename them across the workspace. 10 | 11 | ![](../../.gitbook/assets/global-vars.gif) 12 | 13 | ### Function Scope 14 | 15 | Function scoped variables will only be renamed within the function you are working with. 16 | 17 | ![](../../.gitbook/assets/vars-local.gif) 18 | 19 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/sign-on-save.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Sign scripts after they are saved. 3 | --- 4 | 5 | # Sign On Save 6 | 7 | The Sign on Save features provides a way to sign scripts right after they are saved using a configured code-signing certificate. 8 | 9 | ## Configuring Sign On Save 10 | 11 | You can configure sign on save by enabling the feature in settings and providing a certificate path. 12 | 13 | ![](../../.gitbook/assets/image%20%2866%29.png) 14 | 15 | The path can be left empty and the extension will provide a quick pick drop down the first time you save a file. 16 | 17 | ![](../../.gitbook/assets/image%20%2854%29.png) 18 | 19 | Once you select a certificate, it will store that in the Sign On Save Certificate setting. You'll notice the setting is the full path to the certificate in the certificate store. 20 | 21 | ```text 22 | Microsoft.PowerShell.Security\Certificate::CurrentUser\My\Aasdfasdf23fdasfd0as872389723soad 23 | ``` 24 | 25 | With the setting enabled, any time you save a file, `Set-AuthenticodeSignature` will be called and your file will be signed. 26 | 27 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio-code/windows-forms-designer.md: -------------------------------------------------------------------------------- 1 | # Windows Forms Designer 2 | 3 | {% hint style="info" %} 4 | The Windows Form Designer is only supported on Windows. 5 | {% endhint %} 6 | 7 | {% embed url="https://youtu.be/LULI64meTUs" %} 8 | Building A Windows Form with PowerShell in Visual Studio Code 9 | {% endembed %} 10 | 11 | ## Creating a New Form 12 | 13 | Create a PowerShell script by clicking File \ New File, entering the name of the file with a `.PS1` extension. This will be the script that is used to launch your form. 14 | 15 | ## Opening the Designer 16 | 17 | To open the designer press `Ctrl+Shift+P` and then type `Show Windows Forms Designer` . The `PowerShell Pro Tools: Show Forms Designer` command should be show. Click or press enter. 18 | 19 | You can also open a form by clicking the Show Windows Forms Designer button in the tool bar of a PS1 file. 20 | 21 | ![](<../../.gitbook/assets/image (37).png>) 22 | 23 | ## Working with the Designer 24 | 25 | The designer is very much like the standard Visual Studio designer. The design surface on the left allows you to modify your form. You can resize and delete controls from the bottom. 26 | 27 | On the right right it provides a toolbox with controls that can be selected and placed on the form. The add a new control, click the control you'd like to place and then click the design surface of where you would like to place the control. 28 | 29 | Below the toolbox is the properties dialog. You can select a control and modify its properties within this control. 30 | 31 | On the bottom of the designer is a status bar. It displays the file that is being modified by the designer. An asterisk will be shown when the form is modified. 32 | 33 | ![](<../../.gitbook/assets/image (11).png>) 34 | 35 | ## Event Handlers 36 | 37 | To implement an event handler, double click on the control you'd like to add the event handler to. It will automatically generate the event handler code in Visual Studio Code. 38 | 39 | Event handlers can also be generated by clicking the event handler tab in the property pane. 40 | 41 | ![Event handler pane](<../../.gitbook/assets/image (1) (1).png>) 42 | 43 | To create a new event handler, type the name of the handler in the text box next to the event handler. Once you press enter and then save the form, with Ctrl+s or the Save button, the event handler will be generated in the code file. 44 | 45 | ## 46 | 47 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: PowerShell Tools for Visual Studio 3 | --- 4 | 5 | # Visual Studio 6 | 7 | PowerShell Tools for Visual Studio provides IntelliSense, syntax highlighting, debugging and more for PowerShell in Visual Studio. 8 | 9 | [PowerShell Pro Tools](https://docs.poshtools.com/powershell-pro-tools-documentation/visual-studio) includes additional features for Visual Studio including a Windows Forms Designer, PowerShell 7 support and PSScriptAnalyzer support. 10 | 11 | ## Visual Studio Support 12 | 13 | * [Visual Studio 2017](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561) 14 | * [Visual Studio 2019](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561) 15 | * [Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsVS2022) 16 | 17 | ## Supported PowerShell Versions 18 | 19 | * Windows PowerShell 5.1 20 | * PowerShell 7.0 21 | * PowerShell 7.1 22 | * PowerShell 7.2 23 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/analysis.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Script analysis for PowerShell scripts. 3 | --- 4 | 5 | # Analysis 6 | 7 | PowerShell Pro Tools uses PSScriptAnalyzer to run static code analysis of PowerShell scripts in Visual Studio. You can enable analysis by click View->PowerShell->Settings. Click Save after modifying the settings. 8 | 9 | ![Script Analyzer Settings](<../../.gitbook/assets/image (83) (1).png>) 10 | 11 | On the options page, you can turn on and off script analyzer completely, manage solution wide analysis, disable specific severities or even specific rules. 12 | 13 | When Script Analyzer is enabled, squiggly lines will be present within source files to provide information on potential issues with the ability to provide quick fixes for those issues. 14 | 15 | If you have solution wide analysis enabled, you will be able to see errors within your entire solution within the Error List window. 16 | 17 | ![Error List Window](<../../.gitbook/assets/image (8) (1).png>) 18 | 19 | ## Quick Fix 20 | 21 | PowerShell Pro Tools supports quick fix actions provided by PSScriptAnalyzer. If the suggestion has a Suggested Correction, PowerShell Pro Tools will provide a Quick Action light bulb next to the line that needs to be addressed. 22 | 23 | ![Executing quick fix actions](../../.gitbook/assets/quickfix.gif) 24 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/bundling-and-packaging-with-msbuild.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Package PowerShell scripts as executables. 3 | --- 4 | 5 | # Packaging in Visual Studio 6 | 7 | PowerShell Pro Tools exposes bundling and packaging as an MSBuild task and PowerShell project system property page. 8 | 9 | ## About Packaging 10 | 11 | Packaging a PowerShell script embeds the scrip in a .NET executable so that other users cannot modify the contexts of the script. When the executable is launched, the script will be executed just as it was from the command line. The script can still accept arguments, you can package Windows Forms applications and embed dependent modules. 12 | 13 | ### Configuring Packaging 14 | 15 | Packaging is configured via the PowerShell Project properties page of either a module or script project in Visual Studio. You can configure many types of options for your package. 16 | 17 | ![Packaging settings for a PowerShell Project](<../../.gitbook/assets/image (25).png>) 18 | 19 | #### Entry Point 20 | 21 | The entry point is the script that will be executed when you start your executable. This script can include other scripts or modules and enabling the bundling feature will include them as well. 22 | 23 | #### Bundle 24 | 25 | Enabling the bundling feature will automatically include scripts that are dot source with the entry point script. This setting is recursive. For example, if you have a root.ps1 that dot sources a child\_level\_1.ps1 script with then references a child\_level\_2.ps1 script, all the scripts will be included together. 26 | 27 | #### Package as Executable 28 | 29 | You can bundle without packaging as an executable by unchecking the Package as executable checkbox. 30 | 31 | #### Obfuscate executable 32 | 33 | While you cannot open an executable in a text editor such as VS Code or Notepad, you can use a tool like dotPeek or .NET Reflector to disassemble the executable and look at the source code. Using the Obfuscate executable option, the contents of the executable will be scrambled. The executable will work the same but will be much harder to determine what is going on in the script. It prevents the casual reverse engineer from figuring out what is going on. 34 | 35 | #### Hide Console Window 36 | 37 | You can chose to hide the console window. This is especially nice when you are packaging a Windows Forms script. It will hide the PowerShell console and only show the form. You may see a brief flash of a console when starting your packaged executable with this option selected. 38 | 39 | #### .NET Framework Version 40 | 41 | This is the target .NET Framework version to target for your executable. You should have the .NET Developer Pack installed for that version of the framework to successfully compile your executable. The end-user's machine will need this version of .NET (or later) installed on their machine to run your executable. 42 | 43 | It's recommended to use at least .NET 4.6.2. 44 | 45 | #### Package Modules 46 | 47 | Selecting this option will package modules into the executable. Modules are zipped and embedded into the package. When the executable is run, they are extracted to a temporary location for the executable script to access. 48 | 49 | #### File Description 50 | 51 | Sets the file description on the executable in the Details tab when viewing the properties of the executable. 52 | 53 | #### File Version 54 | 55 | Sets the file version on the executable in the Details tab when viewing the properties of the executable. 56 | 57 | #### Product Name 58 | 59 | Sets the product name on the executable in the Details tab when viewing the properties of the executable. 60 | 61 | #### Product Version 62 | 63 | Sets the product version on the executable in the Details tab when viewing the properties of the executable. 64 | 65 | #### Icon 66 | 67 | Sets the icon for the executable. 68 | 69 | #### Require Elevation 70 | 71 | Forces the user to run the executable as administrator when starting the executable. This is helpful when the script needs to access administrative resources on a machine. 72 | 73 | ### Executing Packaging 74 | 75 | After configuring packaging, you can execute the package process when building the project you configured. You can do this by right clicking on the project and selecting Build or by click Build and then Build Solution in the main Visual Studio Menu. 76 | 77 | Output from the packaging process will be shown in the Output pane. 78 | 79 | ### Package Output 80 | 81 | The package is output to the configured output directory in the PowerShell Project. You can get the full path to the executable by looking in the Output pane after packaging. 82 | 83 | ## Packaging PowerShell 7 in Visual Studio 84 | 85 | In Visual Studio, you can package PowerShell 7 into the executable. When you package for PowerShell 7, it includes the .NET Core runtime and PowerShell SDK directly into your executable. Your executable will be significantly larger in size but will also be able to run without having to install PowerShell 7. 86 | 87 | {% hint style="info" %} 88 | You will need the [.NET Core 3.1 or later](https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.404-windows-x64-installer) SDK installed to bundle PowerShell 7 executables. 89 | {% endhint %} 90 | 91 | To bundle for PowerShell 7, you will need to set two settings. First, set the .NET version to `netcoreapp31`. This will use the .NET Core 3.1 SDK to bundle your executable. Next, you will need to set the PowerShell version to 7.0 or later. 92 | 93 | ![](<../../.gitbook/assets/image (39).png>) 94 | 95 | The resulting executable will be written to the output directory listed in the Output pane. 96 | 97 | ![](<../../.gitbook/assets/image (38).png>) 98 | 99 | To deploy your executable, you will only need to include the exe file. For example: 100 | 101 | ``` 102 | C:\Users\adamr\source\repos\PowerShellProject3\PowerShellProject3\bin\Debug\Form.exe 103 | ``` 104 | 105 | ## Packaging Resources 106 | 107 | Packaging resources, such as images, can be helpful when creating UI's like WPF windows. You can follow the below steps to embed resources. 108 | 109 | First, add the resource to your PowerShell Project. Right click on your project and then click Add \ Existing Item. When the file browser dialog opens, select your resource. 110 | 111 | Next, right click on your resource and select properties. In the property dialog, change the Resource property to true. This will embed the resource into the assembly. 112 | 113 | ![](<../../.gitbook/assets/image (71).png>) 114 | 115 | Finally, if you are using WPF, then you can reference the assembly by name. 116 | 117 | ``` 118 | 126 | 127 | 128 | 129 | 130 | ``` 131 | 132 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/go-to-definition.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Navigate to function definitions. 3 | --- 4 | 5 | # Go to Definition 6 | 7 | {% hint style="info" %} 8 | Requires a PowerShell Pro Tools license. 9 | {% endhint %} 10 | 11 | Go to definition allows you to navigate from a command to a function definition by right clicking on the command and clicking Go To Definition. It will open the script and highlight the line where the function is defined. This feature requires Solution Wide Analysis to be enabled. 12 | 13 | ![](<../../.gitbook/assets/goto (1).gif>) 14 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/powershell-6-and-7-support.md: -------------------------------------------------------------------------------- 1 | # PowerShell 7 Support 2 | 3 | PowerShell 7 support is available if you have either of the environments installed. PowerShell Pro Tools will automatically locate the pwsh.exe that is required. 4 | 5 | ## Selecting PowerShell 7 6 | 7 | You can use the General options page of PowerShell Tools to select PowerShell 7. 8 | 9 | ![](<../../.gitbook/assets/image (7) (1) (1).png>) 10 | 11 | You can also use the PowerShell Tools toolbar PowerShell Version combo box to select the PowerShell version. You can enable the toolbar by right clicking on the Visual Studio toolbar and then select PowerShell Tools. 12 | 13 | ![](<../../.gitbook/assets/image (45).png>) 14 | 15 | To select the PowerShell version, select the version in the drop down. 16 | 17 | ![](<../../.gitbook/assets/image (46).png>) 18 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/refactoring.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Refactoring tools for Visual Studio. 3 | --- 4 | 5 | # Refactoring 6 | 7 | ### About 8 | 9 | Refactorings allow you to change or generate code based on the code you have. You will find a list of refactors below. You can invoke a refactor by pressing `Ctrl+.` or by clicking the light bulb. 10 | 11 | Only valid refactors will be returned in the drop down menu. 12 | 13 | ### Convert to $\_ 14 | 15 | This refactoring converts a `$PSItem` variable to the `$_` variable. 16 | 17 | ### Convert to $PSItem 18 | 19 | Converts a reference to the `$_` variable to `$PSItem`. 20 | 21 | ### Convert to Multiline Command 22 | 23 | Converts a command invocation into a multi-line command. Each parameter and argument is broken up with backticks. 24 | 25 | ### Convert to Splat 26 | 27 | Converts a command invocation into a splatting expression and creates a hashtable named `$Parameters` and then passes that hashtable as a splatting expression to the command. Positional arguments are not added to the hashtable. 28 | 29 | ### Export Module Member 30 | 31 | Exports the selected variable or function from a module using `Export-ModuleMember`. 32 | 33 | ### Extract Function 34 | 35 | You can use the Extract Function refactor to convert a section of code into a function. It will analyze the selected block and determine if there are variables that should be added as parameters. These variables will be added to the `param` block. 36 | 37 | ### Extract Selection to File 38 | 39 | You can use the Extract Selection to File refactor to create a new file based on the selection in the current active editor. 40 | 41 | ### Generate Function from Usage 42 | 43 | You can generate a function based on a command example. This refactoring will analyze the parameters, arguments and whether the command is used in a pipeline. If used in a pipeline, this refactoring will generate an advanced function. 44 | 45 | ### Generate Proxy Function 46 | 47 | Proxy functions allow you to extend existing functions with new parameters and functionality. You can select a command that you use within your script and select the Generate Proxy Function refactoring to have it generate the proxy function code for you. 48 | 49 | ### Introduce Using Namespace 50 | 51 | The introduce using namespace refactoring adds a `using namespace` statement to the top of a script and replaces the selected type expression with the namespace removed. 52 | 53 | ### Reorder Parameters 54 | 55 | You can reorder parameters by using the `Ctrl+PageUp` and `Ctrl+PageDown` key bindings. Ensure that your cursor is on top of a parameter for a command. Press one of the key bindings. To move a parameter to the right, use Page Up. To move a parameter to the left, use Page Down. 56 | 57 | ### Split Pipeline 58 | 59 | The split pipe refactoring will split a pipe into multiple lines. Each element in the pipe is stored in a variable and passed to the next item in the pipe. This can be useful for debugging long or complex pipeline operations. 60 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/tool-windows.md: -------------------------------------------------------------------------------- 1 | # Tool Windows 2 | 3 | ## Variables 4 | 5 | The variables tool window allows you to view and expand variables; even when not in the debugger. 6 | 7 | To access the variables window, click View \ PowerShell \ PowerShell Variables 8 | 9 | ![Variables Tool Window](<../../.gitbook/assets/image (69).png>) 10 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/user-interface-design/README.md: -------------------------------------------------------------------------------- 1 | # User Interface Design 2 | 3 | {% hint style="info" %} 4 | Requires a [PowerShell Pro Tools license.](https://ironmansoftware.com/pricing/powershell-pro-tools) 5 | {% endhint %} 6 | 7 | ## Building a GUI with WPF in Visual Studio 8 | 9 | ## Applies to: 10 | 11 | * Visual Studio 2017, 2019, 2022 12 | * PowerShell Pro Tools license 13 | 14 | ## Creating a Project 15 | 16 | You can create a module or script project. 17 | 18 | Click File->New->Project 19 | 20 | ![](https://i0.wp.com/wandering.life/wp-content/uploads/2017/04/newproject.png?resize=581%2C155) 21 | 22 | Select the Module or Script project type, name it and then click Ok. 23 | 24 | Right click on your project to create a new file and select the PowerShell WPF Window item template. 25 | 26 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/05/newWpfItem.png?resize=778%2C539) 27 | 28 | After creating your WPF window, you will see the same designer you would for a C# or VB.NET project. 29 | 30 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/05/WpfDesigner.png?resize=728%2C572) 31 | 32 | A code behind file is automatically created that contains a PowerShell script capable of loading the XAML and running the WPF window. 33 | 34 | ![](https://i0.wp.com/wandering.life/wp-content/uploads/2017/05/codeBehind.png?resize=937%2C175) 35 | 36 | Pressing F5 or clicking the Start button on the menu will launch your WPF window. 37 | 38 | ‘ 39 | 40 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/05/debuggingWpf.png?resize=617%2C582) 41 | 42 | ## Wiring up Event Handlers 43 | 44 | In order to enable execution of actions based on different events, you’ll want to hook up some event handlers. To do so, the first thing you’ll need to do is name your control. Named controls are currently a requirement for event handlers. 45 | 46 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/05/myButton.png?resize=521%2C149) 47 | 48 | Next, select the event you would like wired up, enter a name for the event handler function and press enter. 49 | 50 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/05/addEventHandler.png?resize=527%2C354) 51 | 52 | The code behind generator will create a bunch of code to wire your event handler function to your control. 53 | 54 | The first section removes the actual event handler XML attribute from the XAML. This is because PowerShell doesn’t actually support this type of event binding. I’ll look into supporting it somehow in the future but for now the event handlers in the XAML are placeholders for what is created in the code behind. They are removed at runtime. 55 | 56 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/05/RemoveEventHandlers.png?resize=726%2C140) 57 | 58 | The next piece of generated code is for variables that define the controls within your XAML. Currently, only the control you are adding an event handler for is generated in this section. In the future, all named controls will show up here. This allows PowerShell scripts to interact with the live controls. 59 | 60 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/05/controlVariables.png?resize=722%2C92) 61 | 62 | Finally, we create an event handler function and wire it to the event on the control. 63 | 64 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/05/eventHandler.png?resize=648%2C238) 65 | 66 | From here, we can define logic in the onClick function to take actions like opening a message box. 67 | 68 | ![](https://i0.wp.com/wandering.life/wp-content/uploads/2017/05/hey.png?resize=522%2C419) 69 | 70 | ## Packaging as an executable 71 | 72 | XAML and the code behind script can be[packaged as an executable](https://poshtools.com/docs/posh-pro-tools/package-as-executable/). Simply right click on the WPF XAML window in the Solution Explorer window and select “Package as executable”. 73 | -------------------------------------------------------------------------------- /powershell-pro-tools-documentation/visual-studio/user-interface-design/building-a-gui-with-windows-forms-in-visual-studio.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Building a GUI with Windows Forms in Visual Studio 3 | --- 4 | 5 | # Windows Forms 6 | 7 | ## Creating a Project 8 | 9 | You can create a module or script project. 10 | 11 | Click File->New->Project 12 | 13 | ![](https://i0.wp.com/wandering.life/wp-content/uploads/2017/04/newproject.png?resize=581%2C155) 14 | 15 | Select the Module or Script project type, name it and then click Ok. 16 | 17 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/newproject2.png?resize=753%2C522) 18 | 19 | ## Create the Form 20 | 21 | After installing the Pro tools, you should now have a Form item template available. Right click on your project and select Add->New Item. 22 | 23 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/newitem.png?resize=481%2C222) 24 | 25 | Once the New Item dialog pops up, select the PowerShell Form template, name it and click Ok. 26 | 27 | ![](https://i0.wp.com/wandering.life/wp-content/uploads/2017/04/additem2.png?resize=696%2C482) 28 | 29 | ## Working with the Form Designer 30 | 31 | ### Adding Controls 32 | 33 | The form designer works the same way with any language. You can select items from the Toolbox window and drag them onto your form. Properties of the controls can be set using the Properties window. 34 | 35 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/04/workingwithforms.png?resize=849%2C457) 36 | 37 | Adding controls automatically updates the Form.Designer.ps1 file. Do not edit this file by hand as the editor will simply recreate it after changes are made to the form. 38 | 39 | ![](https://i2.wp.com/wandering.life/wp-content/uploads/2017/04/designer.png?resize=682%2C296) 40 | 41 | ### Adding Event Handlers 42 | 43 | To do anything interesting, you’ll need to add event handles. You can access a control’s events by selecting it in the designer and clicking the Event button in the Properties window. 44 | 45 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/events.png?resize=628%2C255) 46 | 47 | Enter the name of your event handler function and click enter. 48 | 49 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/createhandler.png?resize=325%2C149) 50 | 51 | After you press enter, you will be moved into the code-behind view where you can wire up your event handler. 52 | 53 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/codebehind.png?resize=628%2C204) 54 | 55 | The event handler will automatically be wired up to your control. 56 | 57 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/add\_Click.png?resize=515%2C82) 58 | 59 | ## Debugging A Form 60 | 61 | Once you are ready to test out your form, you can click Start or press F5 from either the designer window or the code-behind window. PoshTools will fire off the script and you can set breakpoints and debug like any other PowerShell script. 62 | 63 | ![](https://i0.wp.com/wandering.life/wp-content/uploads/2017/04/debuger.png?resize=709%2C237) 64 | 65 | And just like that you have a working Windows Form. 66 | 67 | ![](https://i1.wp.com/wandering.life/wp-content/uploads/2017/04/running.png?resize=775%2C400) 68 | 69 | ## Accessing Controls Added to the Form 70 | 71 | In many circumstances, you’ll want to access a control that you’ve add to the form. The $MainForm variable will have parameters for each of it's child items. You can access those through the control's name. 72 | 73 | ``` 74 | $MainForm.lblMyLabel.Value = "Some Text" 75 | ``` 76 | 77 | ## Conclusion 78 | 79 | The PowerShell scripts generated by PoshProTools can be used in any PowerShell host. The designer and code-behind files can be joined into a single script. You can use the bundling functionality of PoshProTools to do this automatically. 80 | -------------------------------------------------------------------------------- /powershell-tools-documentation/chapter1/README.md: -------------------------------------------------------------------------------- 1 | # Debugging 2 | 3 | {% embed url="https://youtu.be/53lsdzhcKr0" %} 4 | 5 | You can debug local and remote scripts with the PowerShell Tools for Visual Studio. The extension also supports attaching to processes that are hosting runspaces and debugging the scripts they are executing. 6 | -------------------------------------------------------------------------------- /powershell-tools-documentation/chapter1/local-debugging.md: -------------------------------------------------------------------------------- 1 | # Local Debugging 2 | 3 | ## Local Debugging 4 | 5 | ## Executing the Debugger 6 | 7 | ### Run from a PowerShell Project 8 | 9 | With PowerShell Tools for Visual Studio, a couple new project templates are included. When working with a script that is part of a PowerShell project, you can execute the current script by simply starting debugging like you would with any other language inside Visual Studio. Pressing F5 or the Start Debugging button will allow you to execute and debug your script. 10 | 11 | To create a PowerShell Project, just navigate to File->New->Project and select one of the PowerShell project types. 12 | 13 | ![](https://camo.githubusercontent.com/fa0d1edc98590c9db85fa9dbd47d6263ecca0dfc/687474703a2f2f692e696d6775722e636f6d2f717331386a724d2e706e67) 14 | 15 | ### Run a script from any project type 16 | 17 | Scripts can also be run from any type of project using the context menu items or shortcut commands. Right clicking in a PowerShell script will show the option to run the script or the selection. 18 | 19 | ![](https://camo.githubusercontent.com/136651d8e10a744a6515287469c6734644a7e6cb/687474703a2f2f692e696d6775722e636f6d2f4d7133376a4b552e706e67) 20 | 21 | You can also run a script from the solution explorer. Just right click on the script and select Execute as Script. 22 | 23 | ![](https://camo.githubusercontent.com/49415f7630b636d8914d44440f59596a67b03552/687474703a2f2f692e696d6775722e636f6d2f6b5a6f6872364b2e706e67) 24 | 25 | ## Execute Selection 26 | 27 | You can execute a selection using the Ctrl+F8 key or by right clicking the code and clicking Execute Selection. 28 | 29 | ![](<../../.gitbook/assets/image (26).png>) 30 | 31 | You can execute a selection from within a PS1 file. 32 | -------------------------------------------------------------------------------- /powershell-tools-documentation/powershell-interactive-window.md: -------------------------------------------------------------------------------- 1 | # PowerShell Interactive Window 2 | 3 | The PowerShell Interactive Window provides a console like experience within Visual Studio. The interactive window can execute PowerShell scripts and commands, connect to remote machines and interact with the Visual Studio environment. 4 | 5 | ## Accessing the PowerShell Interactive Window 6 | 7 | To access the PowerShell interactive window, click View->PowerShell->PowerShell Interactive Window. You can also use the default key combination Ctrl+Shift+\\. 8 | 9 | ![](<../.gitbook/assets/image (31).png>) 10 | 11 | ## Executing Commands 12 | 13 | You can execute commands in the PowerShell interactive window just like any other PowerShell prompt. PowerShell Tools IntelliSense is available in the interactive window. You can simply press enter to execute a command. The interactive window has access to the current PowerShell session. Any scripts run through the Visual Studio debugger will influence the environment of the interactive window. Variables and functions defined in these scripts can be called in the interactive window. 14 | 15 | ## Connecting to a Remote Machine 16 | 17 | The interactive window can connect to a remote machine by clicking the Enter PowerShell Session button or using Enter-PSSession. Clicking the Enter PowerShell Session button will prompt you for a computer name. 18 | 19 | You can then enter your credentials. You will be connected to the remote machine using Enter-PSSession. 20 | 21 | You can disconnect from a remote session with the Exit PowerShell Session button. 22 | 23 | ## Clear the Screen 24 | 25 | You can clear the screen with the Clear Screen button. 26 | 27 | ## Interact with Visual Studio 28 | 29 | The Visual Studio DTE automation variable is available in the entire PowerShell session, including the interactive window, as $dte. The DTE object exposes useful functionality such as Solutions, Projects, Files, Commands and Windows. 30 | -------------------------------------------------------------------------------- /powershell-tools-documentation/project-system/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: PowerShell Project System. 3 | --- 4 | 5 | # Project System 6 | 7 | PowerShell Pro Tools integrates with the MSBuild project system. You can configure PowerShell Projects to run build events and package scripts as executables. 8 | -------------------------------------------------------------------------------- /powershell-tools-documentation/project-system/advanced.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Advanced settings for PowerShell Projects. 3 | --- 4 | 5 | # Advanced 6 | 7 | {% hint style="info" %} 8 | Requires a [PowerShell Pro Tools license](https://ironmansoftware.com/pricing/powershell-pro-tools). 9 | {% endhint %} 10 | 11 | The advanced tab is used to configure packaging for projects. You can select which script to package, whether to include modules, what target framework to use and more. 12 | 13 | ![Advanced Tab](<../../.gitbook/assets/image (84).png>) 14 | -------------------------------------------------------------------------------- /powershell-tools-documentation/project-system/build-eventys.md: -------------------------------------------------------------------------------- 1 | # Build Events 2 | 3 | PowerShell Projects support pre-build and post-build events. Currently, there is no actual build step so running pre-build will simply run a script before the post-build script. 4 | 5 | ![](<../../.gitbook/assets/image (82).png>) 6 | 7 | You can access the pre and post build events by opening the Properties page for you project. Right click on your project within the Solution Explorer window and select Properties. You can add PowerShell scripts and access MSBuild variables in your build events. You build events are executed when MSBuild builds your PowerShell project. 8 | 9 | ![Project Properties](<../../.gitbook/assets/image (83).png>) 10 | -------------------------------------------------------------------------------- /powershell-tools-documentation/project-system/debug.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Debug options for PowerShell Projects. 3 | --- 4 | 5 | # Debug 6 | 7 | By default, the currently active window will be launched when pressing F5 or by clicking the Start button on the task bar. You can use the Debug options within your project to configure a different file to run when the Start button is clicked. 8 | 9 | ![](<../../.gitbook/assets/image (85).png>) 10 | -------------------------------------------------------------------------------- /powershell-tools-documentation/settings/README.md: -------------------------------------------------------------------------------- 1 | # Settings 2 | 3 | Syntax highlighting is configured just like any other language in Visual Studio. 4 | 5 | 1. Click Tools 6 | 2. Click Options 7 | 3. Click Fonts and Colors 8 | 4. Modify the Display Items under the Text Editor that start with PowerShell 9 | 10 | ![](https://camo.githubusercontent.com/2f6362e1063eb7e9a346f55092974b59fbf28056/687474703a2f2f692e696d6775722e636f6d2f73574a576679452e706e67) 11 | -------------------------------------------------------------------------------- /powershell-tools-documentation/settings/analysis.md: -------------------------------------------------------------------------------- 1 | # Analysis 2 | 3 | {% hint style="info" %} 4 | This feature requires a [PowerShell Pro Tools license.](https://ironmansoftware.com/powershell-pro-tools) 5 | {% endhint %} 6 | 7 | Script analysis settings can be found in View \ PowerShell \ Settings \ Script Analysis. You can enable script analyzer, severities and individual rules. 8 | 9 | ![](<../../.gitbook/assets/image (82) (1).png>) 10 | -------------------------------------------------------------------------------- /powershell-tools-documentation/settings/diagnostics.md: -------------------------------------------------------------------------------- 1 | # Diagnostics 2 | 3 | If you happen to encounter an issue with PowerShell Tools for Visual Studio, it may be helpful to enable diagnostic logging. To enable it, visit the options page within the Tools->Options menu. 4 | 5 | ![](<../../.gitbook/assets/image (33).png>) 6 | 7 | Click on the PowerShell Tools section and check the Enable Diagnostic Logging check box. You will need to restart Visual Studio. 8 | 9 | Logging will output to `%AppData%\PowerShell Tools for Visual Studio\log.txt` 10 | -------------------------------------------------------------------------------- /powershell-tools-documentation/settings/general.md: -------------------------------------------------------------------------------- 1 | # General 2 | 3 | General settings can be found in Tools \ Options \ PowerShell Tools \ General. 4 | 5 | ![](<../../.gitbook/assets/image (34).png>) 6 | -------------------------------------------------------------------------------- /powershell-tools-documentation/unit-test-adapter.md: -------------------------------------------------------------------------------- 1 | # Unit Test Adapter 2 | 3 | ## Unit Test Adapter 4 | 5 | ## Getting Started 6 | 7 | The PowerShell Tools for Visual Studio integrates a unit test adapter that can discover and execute[Pester](https://github.com/pester/Pester)tests. To write tests you will need to create a PS1 file that ends in the extension “Tests.PS1”. The test adapter will only look in files with this extension. From there, you can author Pester tests as you normally would. The Test Explorer window will display the tests it finds and you can execute them by clicking Run All or Run. 8 | 9 | Test results are shown just like any other testing framework. They will include the result of the test, the reason for failure and a stack trace to the offending code that has failed. 10 | 11 | ## Pester Installation 12 | 13 | The test adapter will look in a few places while attempting to load the Pester module. 14 | 15 | 1. Test run directory 16 | 2. Solution Package directory 17 | 18 | _Note: this does not follow the NuGet package resolution logic and only currently uses the solution directory_ 19 | 3. PSModule path 20 | 21 | ## Debugging Issues with the test adapter 22 | 23 | The test adapater will log to the Output pane in the Tests category. Check here first for any issues you may encounter when writing tests. 24 | -------------------------------------------------------------------------------- /powershell-tools-documentation/visual-studio/format-document.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Code formatting for PowerShell. 3 | --- 4 | 5 | # Format Document 6 | 7 | Code formatting can be accomplished by using the standard `Ctrl+K`, `Ctrl+D` keyboard shortcut within Visual Studio. 8 | 9 | The PSScriptAnalyzer module is required to perform formatting. From Windows PowerShell, you can install PSScriptAnalyzer with `Install-Module`. 10 | 11 | ```powershell 12 | Install-Module 'PSScriptAnalyzer' -Scope CurrentUser 13 | ``` 14 | -------------------------------------------------------------------------------- /powershell-tools-documentation/visual-studio/settings/.editorconfig.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Editorconfig support for PowerShell Tools for Visual Studio 3 | --- 4 | 5 | # .editorconfig 6 | 7 | PowerShell Tools for Visual Studio supports `.editorconfig` files. You can include these files in your PowerShell projects to control aspects of the editor based on the file. 8 | 9 | More information on [editor config files here](https://learn.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2022). 10 | 11 | ## Spaces 12 | 13 | To control the number of spaces inserted when pressing tab, you can create a `.editorconfig` file like the following. This will insert 6 spaces per tab. 14 | 15 | ```editorconfig 16 | # PowerShell files 17 | [*.{ps1,psm1,psd1}] 18 | indent_size = 6 19 | indent_style = space 20 | ``` 21 | 22 | ## Tabs 23 | 24 | You can choose to insert tabs by setting the `indent_style` to `tab.` 25 | 26 | ```editorconfig 27 | # PowerShell files 28 | [*.{ps1,psm1,psd1}] 29 | indent_style = tab 30 | ``` 31 | 32 | ## Adaptive Formatting 33 | 34 | Adaptive formatting may change the format of your document. Disable it to ensure that your `.editorconfig` file is honored. 35 | 36 |
37 | -------------------------------------------------------------------------------- /system-requirements.md: -------------------------------------------------------------------------------- 1 | # System Requirements 2 | 3 | * Visual Studio Community, Pro or Enterprise 2017, 2019, 2022 4 | * PowerShell Versions 5 | * Windows PowerShell v5.1 6 | * PowerShell 7.0 7 | * PowerShell 7.1 8 | * PowerShell 7.2 9 | * .NET 4.7.2 10 | * Packaging 11 | * [.NET Core 3.1 or later](https://dotnet.microsoft.com/download/dotnet/3.1) 12 | * [.NET 5.0](https://dotnet.microsoft.com/download/dotnet/5.0) is required for packaging PowerShell 7.1 or later 13 | * .NET 4.6.2 (or later) Developer Pack [https://dotnet.microsoft.com/en-us/download/dotnet-framework/net462](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net462) is required for packaging for Windows PowerShell 14 | --------------------------------------------------------------------------------