New-NetStaticIPAddress.ps1
<#PSScriptInfo .VERSION 1.2 .GUID d03a0e2b-361d-4994-af70-ae2afc40d661 .AUTHOR Thomas J. Malkewitz @dotps1 .COMPANYNAME .COPYRIGHT .TAGS TCPIP IP NIC .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES NetTCPIP .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Removed duplicate '#Requires' statment. #> <# .DESCRIPTION Sets a static IP Address on a Network Adapter. .EXAMPLE PS C:\> New-NetStaticIPAddress -InterfaceIndex 2 -IPAddress 169.127.0.5 -DefaultGateway 169.127.0.1 -DnsServerAddress 169.127.0.1,169.127.0.2 -PrefixLength 24 -Confirm:$false #> #requires -Modules NetTCPIP [CmdletBinding( ConfirmImpact = "High", SupportsShouldProcess = $true )] [OutputType( [Microsoft.Management.Infrastructure.CimInstance] )] param ( [Parameter( ParameterSetName = "ByInterfaceIndex", ValueFromPipelineByPropertyName = $true )] [Alias( "ifIndex" )] [Int] $InterfaceIndex, [Parameter( ParameterSetName = "ByInterfaceAlias", ValueFromPipelineByPropertyName = $true )] [Alias( "ifAlias" )] [String] $InterfaceAlias, [Parameter( Mandatory = $true )] [String] $IPAddress, [Parameter( Mandatory = $true )] [String] $DefaultGateway, [Parameter( Mandatory = $true )] [ValidateRange( 8, 32 )] [Byte] $PrefixLength, [Parameter()] [Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetIPAddress.AddressFamily] $AddressFamily = "IPv4", [Parameter()] [Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetIPAddress.Store] $PolicyStore = "ActiveStore", [Parameter()] [TimeSpan] $PreferredLifetime = "MaxValue", [Parameter()] [Bool] $SkipAsSource = $false, [Parameter()] [Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetIPAddress.Type] $Type = "Unicast", [Parameter()] [ValidateCount( 1, 3 )] [String[]] $DnsServerAddress = $null, [Parameter()] [CimSession[]] $CimSession = $null, [Parameter()] [Int] $ThrottleLimit = 0 ) begin { if ($PSBoundParameters.ContainsKey("CimSession")) { $Local:PSDefaultParameterValues = @{ "*:CimSession" = $CimSession "*:ThottleLimit" = $ThrottleLimit } } } process { switch ($PSCmdlet.ParameterSetName) { "ByInterfaceIndex" { try { $interface = Get-NetAdapter -InterfaceIndex $InterfaceIndex -ErrorAction Stop } catch { Write-Error $_ return } } "ByInterfaceAlias" { try { $interface = Get-NetAdapter -Name $InterfaceAlias -ErrorAction Stop } catch { Write-Error $_ return } } } if ($PSCmdlet.ShouldProcess($interface)) { if ($null -ne (Get-NetIPAddress -InterfaceIndex $interface.InterfaceIndex)) { Remove-NetIPAddress -InterfaceIndex $interface.InterfaceIndex -AddressFamily $AddressFamily -Confirm:${ConfirmPreference} } if ($null -ne (Get-NetRoute -InterfaceIndex $interface.InterfaceIndex)) { Remove-NetRoute -InterfaceIndex $interface.InterfaceIndex -AddressFamily $AddressFamily -Confirm:${ConfirmPreference} } New-NetIPAddress -AddressFamily $AddressFamily -DefaultGateway $DefaultGateway -InterfaceIndex $interface.InterfaceIndex -IPAddress $IPAddress -PolicyStore $PolicyStore -PreferredLifetime $PreferredLifetime -PrefixLength $PrefixLength -SkipAsSource $SkipAsSource -Type $Type if ($null -ne $DnsServerAddress) { Set-DnsClientServerAddress -InterfaceIndex $interface.InterfaceIndex -ServerAddresses $DnsServerAddress } } } end { if ($null -ne $Local:PSDefaultParameterValues) { $Local:PSDefaultParameterValues.Clear() } } |