* Added verbose TCP test logic * Cleaned up output, removed source IP address * Consolidated detailed output logic into ProcessConnectionByTCPPort() * Updated existing tests with -Quiet switch * Improved output formatting, changed logic to match * Error handling and logic improvements * Updated tests to match new output * Updated logic, tcp tests now run once by default * Moved TcpConnectionTestResult enum into TcpTestStatus class * Removed unnecessary whitespace * Wrapped TcpClient() in Using statement * Appended missing period on comments * Change TcpTestStatus to TcpPortStatus for better clarity * Set default count back to 4 * Move stopwatch reset into finally block * Change TcpConnectionTestResult.New to TcpConnectionTestResult.None * Formatting fixes * Increase column size for Result output * Update logic for -quiet option * Change "TestNum" property to "Id" * Change Destination and DestinationAddress to Target and TargetAddress in TcpPortStatus * Implement new form of using declaration * Fix indentation * Update output, improve logic and update tests * Add CancellationToken to allow cancel before timeout * Assign testResult.Connected to client.Connected * Move TcpPortStatus object creation to after connection test * Remove delay from final connection test in loop * Move Count logic from ProcessConnectionByTCPPort into own function * Fix small formatting error * Add handling for TaskCanceledException * Remove redundant CancellationToken getter * Clean up handling of SocketException * Increase readability of final loop check * Remove unnecessary TimeSpan invocation * Rename cancellationTokenSource to match convention * Move SetCountForTcpTest() into BeginProcessing() * Added nameof to Count check * Removed explicit type declaration for TcpClient * Move delay and timeout evaluation out of the cycle * Remove redundant CancellationTokenSource * Initialize detailed SwitchParameter * Add check for Detailed parameter * Remove redundant tests for non-detailed output * Add return after first boolean output * Update tests with new detailed parameter set --------- Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
PowerShell
Welcome to the PowerShell GitHub Community! PowerShell is a cross-platform (Windows, Linux, and macOS) automation and configuration tool/framework that works well with your existing tools and is optimized for dealing with structured data (e.g. JSON, CSV, XML, etc.), REST APIs, and object models. It includes a command-line shell, an associated scripting language and a framework for processing cmdlets.
Windows PowerShell vs. PowerShell Core
Although this repository started as a fork of the Windows PowerShell code base, changes made in this repository do not make their way back to Windows PowerShell 5.1 automatically. This also means that issues tracked here are only for PowerShell Core 6 and higher. Windows PowerShell specific issues should be reported with the Feedback Hub app, by choosing "Apps > PowerShell" in category.
New to PowerShell?
If you are new to PowerShell and would like to learn more, we recommend reviewing the getting started documentation.
Get PowerShell
You can download and install a PowerShell package for any of the following platforms.
| Supported Platform | Download (LTS) | Downloads (stable) | Downloads (preview) | How to Install |
|---|---|---|---|---|
| Windows (x64) | .msi | .msi | .msi | Instructions |
| Windows (x86) | .msi | .msi | .msi | Instructions |
| Ubuntu 22.04 | .deb | .deb | .deb | Instructions |
| Ubuntu 20.04 | .deb | .deb | .deb | Instructions |
| Ubuntu 18.04 | .deb | .deb | .deb | Instructions |
| Ubuntu 16.04 | .deb | N/A | N/A | Instructions |
| Debian 10 | .deb | .deb | .deb | Instructions |
| Debian 11 | .deb | .deb | .deb | |
| CentOS 7 | .rpm | .rpm | .rpm | Instructions |
| CentOS 8 | .rpm | .rpm | .rpm | |
| Red Hat Enterprise Linux 7 | .rpm | .rpm | .rpm | Instructions |
| openSUSE 42.3 | .rpm | .rpm | .rpm | Instructions |
| Fedora 35 | .rpm | .rpm | .rpm | Instructions |
| macOS 10.13+ (x64) | .pkg | .pkg | .pkg | Instructions |
| macOS 11+ (arm64) | .pkg | .pkg | .pkg | Instructions |
| Docker | Instructions |
You can download and install a PowerShell package for any of the following platforms, which are supported by the community.
| Platform | Downloads (stable) | Downloads (preview) | How to Install |
|---|---|---|---|
| Arch Linux | Instructions | ||
| Kali Linux | .deb | .deb | Instructions |
| Many Linux distributions | Snapcraft | Snapcraft |
You can also download the PowerShell binary archives for Windows, macOS and Linux.
| Platform | Downloads (stable) | Downloads (preview) | How to Install |
|---|---|---|---|
| Windows | 32-bit/64-bit | 32-bit/64-bit | Instructions |
| macOS (x64) | 64-bit | 64-bit | Instructions |
| macOS (arm64) | 64-bit | 64-bit | Instructions |
| Linux | 64-bit | 64-bit | Instructions |
| Windows (ARM) | 64-bit (preview) | 64-bit | Instructions |
| Raspbian (ARM) | 32-bit/64-bit | 32-bit/64-bit | Instructions |
To install a specific version, visit releases.
Community Dashboard
Dashboard with visualizations for community contributions and project status using PowerShell, Azure, and PowerBI.
For more information on how and why we built this dashboard, check out this blog post.
Discussions
GitHub Discussions is a feature to enable fluid and open discussions within the community for topics that are not related to code, unlike issues.
This is an experiment we are trying in our repositories to see if it helps move discussions out of issues so that issues remain actionable by the team or members of the community. There should be no expectation that PowerShell team members are regular participants in the discussions. Individual PowerShell team members may choose to participate in discussions, but the expectation is that community members help drive discussions so that team members can focus on issues.
Create or join a discussion.
Chat
Want to chat with other members of the PowerShell community?
There are dozens of topic specific channels on our community-driven PowerShell Virtual User Group, which you can join on:
Add-ons and libraries
Awesome PowerShell has a great curated list of add-ons and resources.
Building the Repository
| Linux | Windows | macOS |
|---|---|---|
| Instructions | Instructions | Instructions |
If you have any problems building, consult the developer FAQ.
Build status of nightly builds
| Azure CI (Windows) | Azure CI (Linux) | Azure CI (macOS) | CodeFactor Grade |
|---|---|---|---|
Downloading the Source Code
You can just clone the repository:
git clone https://github.com/PowerShell/PowerShell.git
See working with the PowerShell repository for more information.
Developing and Contributing
Please see the Contribution Guide for how to develop and contribute. If you are developing .NET Core C# applications targeting PowerShell Core, check out our FAQ to learn more about the PowerShell SDK NuGet package.
Also, make sure to check out our PowerShell-RFC repository for request-for-comments (RFC) documents to submit and give comments on proposed and future designs.
Support
For support, see the Support Section.
Legal and Licensing
PowerShell is licensed under the MIT license.
Windows Docker Files and Images
License: By requesting and using the Container OS Image for Windows containers, you acknowledge, understand, and consent to the Supplemental License Terms available on Docker Hub:
Telemetry
Please visit our about_Telemetry topic to read details about telemetry gathered by PowerShell.
Governance
The governance policy for the PowerShell project is described here.
Code of Conduct
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.