PowerShell

The PowerShell forum accepts bug reports as well as feedback and suggestions. For more information, check out the PowerShell Homepage

The following is a list of the states we use to track items.

status meaning
survey We saw this and we are considering it. Please upvote if it’s important to you.
needs more information We don’t understand the issue and need additional details.
investigating We are looking at this internally to understand things like: scenario, reproduction of issue, costing, or other technical details.
in queue The issue is understood and in our unprioritized backlog. Your votes will be used to drive prioritization of this work.

Please feel free to provide feedback or file bugs here.

(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Add support for calculated properties to Measure-Object

    Votes from Connect: 4

    Original Date Submitted: 11/20/2014 5:43:42 AM

    Description:
    ********Contact Information********
    Handle: Tom Nolan [MSFT]
    Site Name: PowerShell
    Feedback ID: 1033948
    ***************************************

    Frequency: Always Happens
    Regression: Yes, this happens in all previous versions

    Problem Description:
    Most of the *-Object commands support the use of calculated properties, but Measure-Object doesn't. This would be a useful piece of functionality and would also put it in line with the other cmdlets.

    Product Studio item created by Connect Synchronizer due to creation of feedback ID 1033948 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=1033948).

    Repro Steps:
    # The following code is a simple example showing the various…

    2 votes
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)

      We’ll send you updates on this idea

      0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
    • Add ForEach-Object and Where-Object to the built-in ISE snippets

      Votes from Connect: 3

      Original Date Submitted: 11/23/2014 8:12:21 PM

      Description:
      ********Contact Information********
      Handle: Martin Schvartzman
      Site Name: PowerShell
      Feedback ID: 1037606
      ***************************************

      Frequency: Always Happens
      Regression: Yes, this happens in all previous versions

      Problem Description:
      The snippets (CTRL+J) are very helpful for beginners, but the basic ForEach-Object and Where-Object snippets are missing.
      It would be great to have these added to the built-in snippets.

      As a workaround, they can be created using the New-IseSnippet cmdlet:
      New-IseSnippet -Title ForEach-Object -Description 'This snippet inserts the ForEach-Object syntax' -Text 'ForEach-Object { $_ }' -CaretOffset 19 -Force
      New-IseSnippet -Title Where-Object -Description 'This snippet…

      2 votes
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        I agree to the terms of service
        Signed in as (Sign out)

        We’ll send you updates on this idea

        0 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
      • Get-ChildItem help has an incorrect SYNTAX section

        Votes from Connect: 5

        Original Date Submitted: 5/17/2015 11:02:21 PM

        Description:
        ********Contact Information********
        Handle: quilx
        Site Name: PowerShell
        Feedback ID: 1341523
        ***************************************

        Frequency: Documentation
        Regression:

        Problem Description:
        The help of the Get-ChildItem cmdlet is not correct. For example, according to the SYNTAX
        section the command:

        Get-ChildItem -Recurse .\MyProject -File

        is not correct.

        However:
        1) It works and it provides the correct result.
        2) Example 5 uses such an invalid command line syntax.

        I imagine that it is useless to point how time consuming/frustrating and ultimately disturbing
        this can be for such ultra-basic commands that are used and uncountable number of…

        2 votes
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          I agree to the terms of service
          Signed in as (Sign out)

          We’ll send you updates on this idea

          0 comments  ·  Documentation  ·  Flag idea as inappropriate…  ·  Admin →
        • Test-Connection - Resolving address names

          Votes from Connect: 10

          Original Date Submitted: 8/28/2012 1:41:15 AM

          Description:
          ********Contact Information********
          Handle: Shay Levi
          Site Name: PowerShell
          Feedback ID: 759607
          ***************************************

          Frequency: Always Happens
          Regression: Yes, this happens in all previous versions

          Problem Description:
          When the Test-Connection cmdlet is used to ping a computer name, the ProtocolAddress property is displaying the resolved ip address (in IPV4Address and ProtocolAddress properties).

          PS> Test-Connection -ComputerName PC1 -Count 1 | ft -a

          Source Destination IPV4Address IPV6Address Bytes Time(ms)
          ------ ----------- ----------- ----------- ----- --------
          PC2 PC1 10.10.10.10 32 0

          However, Test-Connection doesn't attempt to resolve IP addresses, this is usually done by…

          2 votes
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            I agree to the terms of service
            Signed in as (Sign out)

            We’ll send you updates on this idea

            0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
          • Script cmdlets with dynamic parameters and -PipelineVariable

            Votes from Connect: 3

            Original Date Submitted: 12/3/2014 7:09:24 PM

            Description:
            ********Contact Information********
            Handle: PetSerAl
            Site Name: PowerShell
            Feedback ID: 1045513
            ***************************************

            Frequency: Always Happens
            Regression: No, this is new to the most recent version

            Problem Description:
            Script cmdlets with dynamicparam block throw exception when used with -PipelineVariable common parameter.

            Product Studio item created by Connect Synchronizer due to creation of feedback ID 1045513 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=1045513).

            Repro Steps:
            &{[CmdletBinding()]param()dynamicparam{}} -PipelineVariable asd

            Expected Results:

            Internal BugId: 13129

            2 votes
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)

              We’ll send you updates on this idea

              0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
            • Scripts loaded via a ScriptsToProcess attribute in a module manifest appear as if they are loaded modules

              Votes from Connect: 8

              Original Date Submitted: 6/23/2014 9:36:52 PM

              Description:
              ********Contact Information********
              Handle: Kirk Munro
              Site Name: PowerShell
              Feedback ID: 903654
              ***************************************

              Frequency: Always Happens
              Regression: Yes, this happens in all previous versions

              Problem Description:
              If you load a module that has one or more scripts in the ScriptsToProcess attribute of the module manifest, each of those scripts will appear as if they are modules after the module you loaded has finished loading. This should be fixed, because these scripts are just scripts, not modules.

              Product Studio item created by Connect Synchronizer due to creation of feedback ID 903654…

              2 votes
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                I agree to the terms of service
                Signed in as (Sign out)

                We’ll send you updates on this idea

                0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
              • { not working in ISE with SL keyboard, probably others as well

                Votes from Connect: 19

                Original Date Submitted: 10/29/2015 9:31:39 PM

                Description:
                ********Contact Information********
                Handle: Jan Bocko Kuhar
                Site Name: PowerShell
                Feedback ID: 1958298
                ***************************************

                Frequency: PowerShell ISE
                Regression: Switch to SL keyboard layout and try to type {, which is set to AltGr + B in this layout.

                Problem Description:
                { is set to AltGr + b or Ctrl + Alt + B on SL, HR, ... keyboard layouts, which is set to Debugger in PowerShell ISE. This is really annoying when you use this keyboard layouts as you have to switch to other layouts just for the one character,…

                2 votes
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  I agree to the terms of service
                  Signed in as (Sign out)

                  We’ll send you updates on this idea

                  0 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
                • Events needed for module load/unload

                  Votes from Connect: 10

                  Original Date Submitted: 9/11/2012 2:44:04 AM

                  Description:
                  ********Contact Information********
                  Handle: Jason Shirk
                  Site Name: PowerShell
                  Feedback ID: 761976
                  ***************************************

                  Frequency: Always Happens
                  Regression: Yes, this happens in previous released versions

                  Problem Description:
                  V3 added useful event handlers during command discovery including:

                  * Pre command lookup
                  * Post command lookup
                  * Command not found

                  It would be very useful to have similar events for modules:

                  * Pre module lookup
                  * Post module lookup
                  * Module not found

                  I'm most interested in post module lookup, but the others seem useful as well.

                  Product Studio item created by Connect…

                  2 votes
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    I agree to the terms of service
                    Signed in as (Sign out)

                    We’ll send you updates on this idea

                    0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                  • [System.Management.Automation.Internal.AutomationNull]::Value shouldn't be [psobject] or [pscustomobject]

                    Votes from Connect: 3

                    Original Date Submitted: 6/24/2014 2:10:27 PM

                    Description:
                    ********Contact Information********
                    Handle: Derp McDerp
                    Site Name: PowerShell
                    Feedback ID: 904177
                    ***************************************

                    Frequency: Always Happens
                    Regression: Yes, this happens in all previous versions

                    Problem Description:
                    <# The following is behaving as expected: #>

                    $null -eq [System.Management.Automation.Internal.AutomationNull]::Value
                    # True
                    [System.Management.Automation.Internal.AutomationNull]::Value -eq $null
                    # True

                    $null -is [object]
                    # False
                    [System.Management.Automation.Internal.AutomationNull]::Value -is [object]
                    # False

                    <# Now it starts getting weird: #>

                    $null -is [psobject]
                    # False
                    [System.Management.Automation.Internal.AutomationNull]::Value -is [psobject]
                    # True

                    $null -is [pscustomobject]
                    # False
                    [System.Management.Automation.Internal.AutomationNull]::Value -is [pscustomobject]
                    # True

                    [AutomationNull] should be $false for those two just like…

                    2 votes
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      I agree to the terms of service
                      Signed in as (Sign out)

                      We’ll send you updates on this idea

                      0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                    • Powershell needs to have a "recursionlevel" parameter for items like Get-Childitem

                      Votes from Connect: 4

                      Original Date Submitted: 5/20/2015 6:18:19 AM

                      Description:
                      ********Contact Information********
                      Handle: KevinBG
                      Site Name: PowerShell
                      Feedback ID: 1348542
                      ***************************************

                      Problem Description:
                      At times, I only want to recurse to a limited depth in my directory tree to perform an operation. Today, that requires a non-trivial bit of code to recurse, but only to a particular depth. The addition of a parameter would be helpful. There are likely other commands which could benefit from this.

                      Product Studio item created by Connect Synchronizer due to creation of feedback ID 1348542 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=1348542).

                      Repro Steps:

                      Internal BugId: 14492

                      2 votes
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        I agree to the terms of service
                        Signed in as (Sign out)

                        We’ll send you updates on this idea

                        0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                      • Add PowerShell_ISE Startup Parameters

                        Votes from Connect: 16

                        Original Date Submitted: 6/16/2010 11:13:55 PM

                        Description:
                        ********Contact Information********
                        Handle: cmille19
                        Site Name: PowerShell
                        Feedback ID: 568074
                        ***************************************

                        Frequency: Always Happens
                        Regression: No, this is new to the most recent version

                        Problem Description:
                        The normal PowerShell host supports startup parameters which facilitate building custom shells (i.e. SCOM, Exchange, Admin Tools etc.) callable from the Windows Start Menu. These custom shells either call a startup script that then load modules or import a console files with customizations.

                        Unfortunately, PowerShell_ISE does not support any startup parameters. For the module developer creating solutions which specifically target PowerShell_ISE.exe and NOT…

                        2 votes
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          I agree to the terms of service
                          Signed in as (Sign out)

                          We’ll send you updates on this idea

                          0 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
                        • Add formatting to Get-Help's output

                          Votes from Connect: 6

                          Original Date Submitted: 7/10/2014 9:26:39 PM

                          Description:

                          ********Contact Information********
                          Handle: sba
                          Site Name: PowerShell
                          Feedback ID: 917423
                          ***************************************

                          Frequency: Always Happens
                          Regression: Yes, this happens in previous released versions

                          Problem Description:
                          As of PS4, the output from Get-Help looks very much like a Unix manpage in the 1970s: no colors, no underline, no bold (only some with -ShowWindow)...

                          In 2014, I would expect formatted output -- see attached files to get... the picture ;-)

                          The ability to have Get-Help output to a browser window, from where one would be able to print, would also be nice…

                          2 votes
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            I agree to the terms of service
                            Signed in as (Sign out)

                            We’ll send you updates on this idea

                            0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                          • Hashtables --- [ordered] hashtables lack the ContainsKey() method

                            Votes from Connect: 3

                            Original Date Submitted: 7/11/2014 1:59:10 PM

                            Description:
                            ********Contact Information********
                            Handle: Diogenus
                            Site Name: PowerShell
                            Feedback ID: 917914
                            ***************************************

                            Frequency: Always Happens
                            Regression: I do not know if this issue existed previously

                            Problem Description:
                            Normal hashtables have the method "ContainsKey":

                            >> $h = @{ a=1; b=2 }
                            >> $h.ContainsKey("a")
                            True
                            >>

                            While [Ordered] hashtables DO NOT have the "ContainsKey" method:

                            >> $o = [ORDERED] @{ a=1; b=2 }
                            >> $o.ContainsKey("a")
                            Method invocation failed because
                            [System.Collections.Specialized.OrderedDictionary]
                            doesn't contain a method named 'ContainsKey'.

                            This means that my code never can use the ContainsKey() method on a hashtable before checking…

                            2 votes
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              I agree to the terms of service
                              Signed in as (Sign out)

                              We’ll send you updates on this idea

                              0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                            • Select-Object's -First, -Last, -Skip, and -Unique parameters should not change the output type

                              Votes from Connect: 10

                              Original Date Submitted: 10/10/2012 11:44:45 PM

                              Description:
                              ********Contact Information********
                              Handle: Aleksandar Nikolić
                              Site Name: PowerShell
                              Feedback ID: 766908
                              ***************************************

                              Frequency: Always Happens
                              Regression: I don't know if this issue existed previously

                              Problem Description:
                              When you pipe something to Select-Object –First (or –Last, -Skip, and –Unique), the input and the output type should be the same, because you are not changing any member.

                              And that’s true for every type (compare, for example, Get-Process | Get-Member and Get-Process | select -First 1 | Get-Member) , except for the PSCustomObject type. In case of the PSCustomObject type will be…

                              2 votes
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                I agree to the terms of service
                                Signed in as (Sign out)

                                We’ll send you updates on this idea

                                0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                              • Get-FileHash only accepts single argument for -Algorithm parameter

                                Votes from Connect: 3

                                Original Date Submitted: 7/11/2014 10:53:05 PM

                                Description:
                                ********Contact Information********
                                Handle: Trevor Sullivan
                                Site Name: PowerShell
                                Feedback ID: 918243
                                ***************************************

                                Frequency: Always Happens
                                Regression: No, this is new to the most recent version

                                Problem Description:
                                The Get-FileHash command only accepts a single argument for its Algorithm parameter. If you want to retrieve two different hashes, then the command must be called once for each hashing algorithm. Please enable multiple algorithms to be passed into the Get-FileHash command.

                                Product Studio item created by Connect Synchronizer due to creation of feedback ID 918243 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=918243).

                                Repro Steps:
                                Run…

                                2 votes
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  I agree to the terms of service
                                  Signed in as (Sign out)

                                  We’ll send you updates on this idea

                                  0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
                                • Scripts need better isolation from the user's global session state

                                  Votes from Connect: 4

                                  Original Date Submitted: 11/28/2015 5:59:49 AM

                                  Description:
                                  ********Contact Information********
                                  Handle: Keith Hill MVP
                                  Site Name: PowerShell
                                  Feedback ID: 2065573
                                  ***************************************

                                  Problem Description:
                                  Right now it is too hard to write a 100% reliable script that can run in any particular user's PowerShell console. The crux of the problem is that global session state is so varied amongst individual users it is hard to anticipate all possibilities such as:

                                  •Command proxies
                                  •Imported (auto or explicit) modules that implement the same named command (but semantically different)
                                  •Redirected aliases
                                  •Defined variables you weren't expecting to be defined
                                  •Removed globals…

                                  2 votes
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    I agree to the terms of service
                                    Signed in as (Sign out)

                                    We’ll send you updates on this idea

                                    0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
                                  • Add top-level progress information to Invoke-Command calls

                                    Votes from Connect: 14

                                    Original Date Submitted: 8/11/2010 2:47:58 AM

                                    Description:
                                    ********Contact Information********
                                    Handle: Kirk Munro (Quest Software)
                                    Site Name: PowerShell
                                    Feedback ID: 585227
                                    ***************************************

                                    Frequency: Always Happens
                                    Regression: No, this is new to the most recent version

                                    Problem Description:
                                    Invoke-Command should handle top-level progress reporting (for example: throttling 5 active operations, 9 complete, 123 machines/sessons to go) and have nested progress bars for individual machines that originate from remote machines so that Write-Progress calls from inside the script block continue to work as expected.

                                    Product Studio item created by Connect Synchronizer due to creation of feedback ID 585227 (…

                                    2 votes
                                    Sign in
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      I agree to the terms of service
                                      Signed in as (Sign out)

                                      We’ll send you updates on this idea

                                      0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                                    • ConvertFrom-StringData needs an -Ordered switch (to create an ordered hash table).

                                      Votes from Connect: 15

                                      Original Date Submitted: 10/21/2012 9:05:32 PM

                                      Description:
                                      ********Contact Information********
                                      Handle: mjolinor
                                      Site Name: PowerShell
                                      Feedback ID: 768183
                                      ***************************************

                                      Frequency: Always Happens
                                      Regression: Yes, this happens in all previous versions

                                      Problem Description:
                                      ConvertFrom-StringData should have an -Ordered switch, to specify that you want to create an ordered hash table (to maintain the same order of elements as the string you're converting).

                                      Product Studio item created by Connect Synchronizer due to creation of feedback ID 768183 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=768183).

                                      Repro Steps:
                                      Expected Results:

                                      Internal BugId: 3895

                                      2 votes
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        I agree to the terms of service
                                        Signed in as (Sign out)

                                        We’ll send you updates on this idea

                                        0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
                                      • Auto-generated help for CommonParameters should include InformationAction and InformationVariable

                                        Votes from Connect: 3

                                        Original Date Submitted: 5/27/2015 6:49:42 AM

                                        Description:
                                        ********Contact Information********
                                        Handle: Joel 'Jaykul' Bennett
                                        Site Name: PowerShell
                                        Feedback ID: 1371582
                                        ***************************************

                                        Frequency: PowerShell
                                        Regression: get-help Get-Help -Full | Out-String -stream | select-string "^\s+<CommonParameters>" -Context 0,5

                                        Problem Description:
                                        When you call Get-Help on a function right now the InformationAction and InformationVariable common parameters aren't mentioned:

                                        PARAMETERS
                                        <CommonParameters>
                                        This cmdlet supports the common parameters: Verbose, Debug,
                                        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
                                        OutBuffer, PipelineVariable, and OutVariable. For more information, see
                                        about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).

                                        Product Studio item created by Connect Synchronizer due to creation of feedback ID 1371582 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=1371582).

                                        2 votes
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          I agree to the terms of service
                                          Signed in as (Sign out)

                                          We’ll send you updates on this idea

                                          0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
                                        • PowerShell doesn't allow elided `N on nested generic types

                                          Votes from Connect: 3

                                          Original Date Submitted: 7/12/2014 5:52:23 AM

                                          Description:
                                          ********Contact Information********
                                          Handle: Derp McDerp
                                          Site Name: PowerShell
                                          Feedback ID: 918471
                                          ***************************************

                                          Frequency: Always Happens
                                          Regression: I do not know if this issue existed previously

                                          Problem Description:
                                          PowerShell allows you to elide the `N on generic types, e.g.:

                                          [tuple[int,float]]

                                          instead of:

                                          [tuple`2[int,float]]

                                          But it doesn't work on nested generics, see the reproduction steps for an example. I can't tell if this is a bug or is intentional but it feels like a bug to me.

                                          Product Studio item created by Connect Synchronizer due to creation of feedback ID 918471…

                                          2 votes
                                          Sign in
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            I agree to the terms of service
                                            Signed in as (Sign out)

                                            We’ll send you updates on this idea

                                            0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                                          • Don't see your idea?

                                          Feedback and Knowledge Base