Skip to main content
St Louis

Back to all posts

How to Create Private Class Member In Powershell?

Published on
4 min read
How to Create Private Class Member In Powershell? image

Best PowerShell Scripting Tools to Buy in October 2025

+
ONE MORE?

In PowerShell, a private class member can be created by using the access modifier "private" before the member's declaration. By marking a class member as private, it can only be accessed within the same class and not from outside the class.

For example, to create a private field in a PowerShell class, you would declare it with the private access modifier like this:

class MyClass { private [string] $myPrivateField

MyClass() {
    $this.myPrivateField = "Private value"
}

}

In this example, $myPrivateField is a private field that can only be accessed within the MyClass class. This ensures encapsulation and helps to maintain the class's internal state.

How to restrict access to class members in PowerShell?

In PowerShell, you can restrict access to class members by using access modifiers such as private or protected. By default, class members are considered public, which means they can be accessed from outside the class.

To restrict access to class members, you can use the private access modifier before the member declaration. This will make the member accessible only within the class itself. Here is an example:

class MyClass { private $myPrivateField

# Constructor
MyClass() {
    $this.myPrivateField = "Private Field"
}

# Method accessing private field
\[string\] GetPrivateField() {
    return $this.myPrivateField
}

}

$myObject = [MyClass]::new() Write-Output $myObject.GetPrivateField() # This will output "Private Field"

Attempt to access private field directly will result in an error

Write-Output $myObject.myPrivateField # This will throw an error

In the above example, $myPrivateField is declared as private and can only be accessed within the MyClass class. Attempting to access it directly outside the class will result in an error.

Additionally, you can also use the protected access modifier to restrict access to class members only within the class and its derived classes. This can be useful for inheritance scenarios.

How to handle encapsulation in PowerShell classes using private members?

Encapsulation in PowerShell classes can be achieved by using private members. Private members are variables or methods that can only be accessed within the class itself and cannot be accessed from outside the class. This helps to encapsulate the internal state of the class and prevent external code from directly modifying its internal data.

To define private members in a PowerShell class, you can use the private keyword followed by the member name. Here is an example of a class with private members:

class MyClass { [int] $privateField

MyClass(){
    $this.privateField = 10
}

hidden privateMethod(){
    Write-Host "Private method called"
}

\[int\] GetPrivateField(){
    return $this.privateField
}

\[int\] IncrementPrivateField(){
    $this.privateField++
    return $this.privateField
}

}

$obj = [MyClass]::new() Write-Host $obj.GetPrivateField() $obj.IncrementPrivateField() Write-Host $obj.GetPrivateField()

In the above example, the privateField variable and the privateMethod method are defined as private members of the class MyClass. These private members can only be accessed within the class and not from outside.

By using private members, you can ensure that the internal state of your class is well-encapsulated and prevent external code from interfering with it. This helps to create more robust and maintainable code.

How to prevent external modification of class members in PowerShell?

In PowerShell, one way to prevent external modification of class members is by using access modifiers such as private or internal. By default, class members in PowerShell are public, which means they can be accessed and modified from outside the class.

To prevent external modification, you can declare the class members as private or internal. Private members can only be accessed within the class itself, while internal members can be accessed from within the same module. This restricts external access to the class members and helps prevent unintended modification.

Here's an example of how to declare private class members in PowerShell:

class MyClass { [string] $privateField

MyClass() {
    $this.privateField = "This is a private field"
}

\[void\] SetPrivateField(\[string\] $newValue) {
    $this.privateField = $newValue
}

\[string\] GetPrivateField() {
    return $this.privateField
}

}

$obj = [MyClass]::new() $obj.GetPrivateField() # Output: "This is a private field" $obj.privateField = "Modified" # This will raise an error since privateField is private

By declaring the $privateField variable as private, it cannot be directly accessed or modified from outside the class. Instead, you can provide public methods like SetPrivateField and GetPrivateField to interact with the private field.