├── .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 | .png>)
20 |
21 | .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 | .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 | .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 | .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 | .png>)
20 |
21 | Next, you'll want to export the certificate to a file. Use certmgr.msc to export the certificate.
22 |
23 | .png>)
24 |
25 | Ensure you export all the certificates in the certificate path.
26 |
27 |  (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 | 
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 | .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 | 
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 | .png>)
19 |
20 | Within the activity bar, you'll find tools like the AST explorer, the module explorer and the variable explorer.
21 |
22 | .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?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?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?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?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?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?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?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 | 
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 | 
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 | 
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 | 
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 | 
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 |  (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 |  (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 | .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 | .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 | .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 | .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 | .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 | 
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 | 
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 | 
12 |
13 | If you want to clear the AST node selection, click the Clear Selection button.
14 |
15 | 
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 | 
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 | 
50 |
51 | ## History Explorer
52 |
53 | View the history from PSReadline and insert it into the PowerShell Integrated terminal
54 |
55 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
112 |
113 | ### Insert Variables into Scripts
114 |
115 | You can insert selected variables into scripts using the Insert Variable button.
116 |
117 | 
118 |
119 | Selecting nested properties will insert the path to the property into the script.
120 |
121 | 
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 | 
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 | 
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 | 
12 |
13 | After issuing the command or clicking the button, you will have to enter a short name for the Quick Script.
14 |
15 | 
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 | 
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 | 
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 | .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 | .png>)
26 |
27 | ## Using RapidSense
28 |
29 | .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 |  (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 | .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 | 
18 |
19 | ## Convert to $PSItem
20 |
21 | Converts a reference to the `$_` variable to `$PSItem`.
22 |
23 | 
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 | 
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 | 
36 |
37 | ## Export Module Member
38 |
39 | Exports the selected variable or function from a module using `Export-ModuleMember`.
40 |
41 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
12 |
13 | ### Function Scope
14 |
15 | Function scoped variables will only be renamed within the function you are working with.
16 |
17 | 
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 | 
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 | 
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 | .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 | .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 |  (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 |  (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 |  (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 | 
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 | .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 | .png>)
94 |
95 | The resulting executable will be written to the output directory listed in the Output pane.
96 |
97 | .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 | .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 | .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 |  (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 | .png>)
14 |
15 | To select the PowerShell version, select the version in the drop down.
16 |
17 | .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 | .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 | 
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 | 
27 |
28 | After creating your WPF window, you will see the same designer you would for a C# or VB.NET project.
29 |
30 | 
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 | 
35 |
36 | Pressing F5 or clicking the Start button on the menu will launch your WPF window.
37 |
38 | ‘
39 |
40 | 
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 | 
47 |
48 | Next, select the event you would like wired up, enter a name for the event handler function and press enter.
49 |
50 | 
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 | 
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 | 
61 |
62 | Finally, we create an event handler function and wire it to the event on the control.
63 |
64 | 
65 |
66 | From here, we can define logic in the onClick function to take actions like opening a message box.
67 |
68 | 
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 | 
14 |
15 | Select the Module or Script project type, name it and then click Ok.
16 |
17 | 
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 | 
24 |
25 | Once the New Item dialog pops up, select the PowerShell Form template, name it and click Ok.
26 |
27 | 
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 | 
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 | 
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 | 
46 |
47 | Enter the name of your event handler function and click enter.
48 |
49 | 
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 | 
54 |
55 | The event handler will automatically be wired up to your control.
56 |
57 | 
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 | 
64 |
65 | And just like that you have a working Windows Form.
66 |
67 | 
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 | 
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 | 
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 | 
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 | .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 | .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 | .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 | .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 | .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 | .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 | 
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 |  (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 | .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 | .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 |
--------------------------------------------------------------------------------