Interview

15 PowerShell Scripting Interview Questions and Answers

Prepare for your next interview with our comprehensive guide on PowerShell scripting, featuring common and advanced questions to enhance your skills.

PowerShell scripting has become an essential skill for IT professionals, system administrators, and DevOps engineers. Known for its powerful command-line interface and scripting capabilities, PowerShell enables users to automate complex administrative tasks, manage system configurations, and streamline workflows across various platforms. Its integration with the .NET framework and compatibility with other Microsoft products make it a versatile tool in the tech industry.

This article offers a curated selection of PowerShell scripting questions designed to help you prepare for technical interviews. By working through these examples, you will gain a deeper understanding of PowerShell’s functionalities and enhance your ability to solve real-world problems efficiently.

PowerShell Scripting Interview Questions and Answers

1. Declare a variable of type integer and assign it a value. Then, output the value to the console.

To declare a variable of type integer in PowerShell, use the $ symbol followed by the variable name. Assign a value using the = operator and output it with Write-Output.

Example:

# Declare a variable of type integer and assign it a value
$integerVariable = 42

# Output the value to the console
Write-Output $integerVariable

2. Write a script that checks if a number is even or odd and outputs the result.

To check if a number is even or odd, use the modulus operator (%) to determine the remainder when the number is divided by 2. If the remainder is 0, the number is even; otherwise, it is odd.

param (
    [int]$number
)

if ($number % 2 -eq 0) {
    Write-Output "$number is even"
} else {
    Write-Output "$number is odd"
}

3. Define a function that takes two parameters and returns their sum.

Functions in PowerShell are defined using the function keyword. Parameters are passed using the param keyword, and the function can return a result.

Example:

function Add-Numbers {
    param (
        [int]$a,
        [int]$b
    )
    return $a + $b
}

# Example usage
$result = Add-Numbers -a 5 -b 10
Write-Output $result
# Output: 15

4. Implement error handling in a script that attempts to divide a number by zero.

Error handling can be implemented using try, catch, and finally blocks. These constructs allow you to catch exceptions and handle them appropriately.

Example:

try {
    $numerator = 10
    $denominator = 0
    $result = $numerator / $denominator
} catch {
    Write-Host "An error occurred: $_"
} finally {
    Write-Host "Execution completed."
}

5. Write a script that reads content from a text file and outputs it to the console.

To read content from a text file and output it to the console, use the Get-Content cmdlet.

Example:

# Define the path to the text file
$filePath = "C:\path\to\your\file.txt"

# Read the content of the file and output it to the console
Get-Content -Path $filePath

6. Use an advanced technique like splatting to pass parameters to a function.

Splatting is a method used to pass parameters to functions or cmdlets in a more readable way. Use a hashtable or an array to bundle parameters together.

Example using a hashtable for splatting:

function Get-UserInfo {
    param (
        [string]$Name,
        [int]$Age,
        [string]$Location
    )
    Write-Output "Name: $Name, Age: $Age, Location: $Location"
}

$params = @{
    Name = "John Doe"
    Age = 30
    Location = "New York"
}

Get-UserInfo @params

7. Write a script that uses regular expressions to find all email addresses in a given string.

Regular expressions (regex) are used for pattern matching and text manipulation. To find all email addresses in a string, use the -match operator with a regex pattern.

Example:

$string = "Contact us at [email protected] or [email protected] for more information."
$regex = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

$matches = [regex]::Matches($string, $regex)

foreach ($match in $matches) {
    Write-Output $match.Value
}

8. Explain how to manage remote systems using PowerShell.

Managing remote systems is primarily achieved through PowerShell Remoting, which allows you to run commands on remote computers. Key cmdlets include Invoke-Command and Enter-PSSession.

Example:

# Enable PowerShell Remoting on the local computer
Enable-PSRemoting -Force

# Run a command on a remote computer
Invoke-Command -ComputerName RemotePC -ScriptBlock { Get-Process }

# Start an interactive session with a remote computer
Enter-PSSession -ComputerName RemotePC

9. Automate the task of creating user accounts in Active Directory.

Automating the creation of user accounts in Active Directory involves using the Active Directory module. The key cmdlet for creating a user account is New-ADUser.

Example:

# Import the Active Directory module
Import-Module ActiveDirectory

# Define user details
$userDetails = @{
    SamAccountName = "jdoe"
    UserPrincipalName = "[email protected]"
    Name = "John Doe"
    GivenName = "John"
    Surname = "Doe"
    DisplayName = "John Doe"
    Path = "OU=Users,DC=example,DC=com"
    AccountPassword = (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
    Enabled = $true
}

# Create the user account
New-ADUser @userDetails

10. Explain the importance of script signing and execution policies in PowerShell.

Script signing involves using a digital signature to verify the origin and integrity of a script. Execution policies determine which scripts are allowed to run on a system. These policies help control the execution of scripts and reduce the risk of running untrusted code.

Execution policies include:

– Restricted: No scripts are allowed to run.
– AllSigned: Only scripts signed by a trusted publisher can be run.
– RemoteSigned: Locally created scripts can run, but downloaded scripts must be signed.
– Unrestricted: All scripts can run, with a warning for downloaded scripts.
– Bypass: No restrictions; all scripts can run without warnings.

11. Describe how to use PowerShell to automate a repetitive administrative task.

PowerShell is widely used for task automation and configuration management. To automate a repetitive task, create a script and schedule it using Task Scheduler. For example, cleaning up temporary files:

Example:

# Define the path to the directory
$directory = "C:\Temp"

# Get all files in the directory older than 30 days
$files = Get-ChildItem -Path $directory -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }

# Delete the files
foreach ($file in $files) {
    Remove-Item -Path $file.FullName -Force
}

# Output the result
Write-Output "Cleanup completed. Deleted $($files.Count) files."

12. Explain how to use PowerShell to interact with RESTful APIs.

PowerShell can interact with RESTful APIs using Invoke-RestMethod and Invoke-WebRequest. These cmdlets allow you to send HTTP requests and process responses, often in JSON format.

Example of a GET request:

# Define the API endpoint
$apiUrl = "https://api.example.com/data"

# Make the GET request
$response = Invoke-RestMethod -Uri $apiUrl -Method Get

# Output the response
$response

Example of a POST request with a JSON payload:

# Define the API endpoint
$apiUrl = "https://api.example.com/data"

# Define the JSON payload
$payload = @{
    key1 = "value1"
    key2 = "value2"
} | ConvertTo-Json

# Make the POST request
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Body $payload -ContentType "application/json"

# Output the response
$response

13. Describe how to manage Windows services using PowerShell.

PowerShell provides cmdlets to manage Windows services, such as Get-Service, Start-Service, Stop-Service, Restart-Service, and Set-Service.

Example:

# Query the status of a service
Get-Service -Name "wuauserv"

# Start a service
Start-Service -Name "wuauserv"

# Stop a service
Stop-Service -Name "wuauserv"

# Restart a service
Restart-Service -Name "wuauserv"

# Change the startup type of a service
Set-Service -Name "wuauserv" -StartupType Automatic

14. Create a custom object with properties for Name, Age, and Email, and populate it with sample data.

Custom objects can be created using the New-Object cmdlet, and properties can be added with Add-Member.

Example:

# Create a custom object
$person = New-Object PSObject

# Add properties to the custom object
$person | Add-Member -MemberType NoteProperty -Name "Name" -Value "John Doe"
$person | Add-Member -MemberType NoteProperty -Name "Age" -Value 30
$person | Add-Member -MemberType NoteProperty -Name "Email" -Value "[email protected]"

# Display the custom object
$person

15. Describe how to integrate PowerShell with another tool or software, such as SQL Server.

Integrating PowerShell with another tool, such as SQL Server, involves using cmdlets and modules that facilitate communication. For SQL Server, the SqlServer module provides cmdlets to interact with SQL Server instances.

Example:

# Import the SqlServer module
Import-Module SqlServer

# Define the SQL Server instance and database
$serverInstance = "localhost"
$database = "TestDB"

# Create a SQL query
$query = "SELECT * FROM Users"

# Execute the query and store the results
$results = Invoke-Sqlcmd -ServerInstance $serverInstance -Database $database -Query $query

# Display the results
$results
Previous

15 C#.NET Interview Questions and Answers

Back to Interview
Next

30 Excel Interview Questions and Answers