Update INFMaker.ps1
This commit is contained in:
63
INFMaker.ps1
63
INFMaker.ps1
@@ -1 +1,62 @@
|
||||
placeholder
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$InputPath,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[string]$OutputDir = (Get-Location).Path
|
||||
)
|
||||
|
||||
if (-not (Test-Path -Path $InputPath -PathType Leaf)) {
|
||||
throw "Input file not found: $InputPath"
|
||||
}
|
||||
|
||||
if (-not (Test-Path -Path $OutputDir -PathType Container)) {
|
||||
throw "Output directory not found: $OutputDir"
|
||||
}
|
||||
|
||||
$template = @'
|
||||
[Version]
|
||||
Signature="$Windows NT$"
|
||||
[NewRequest]
|
||||
Subject = "CN=$Placeholder.printer.MBIE.govt.nz;OU=ICT;O=Ministry of Business, Innovation and Employment;L=Wellington;S=Wellington;C=NZ"
|
||||
X500NameFlags = 0x40000000
|
||||
Exportable = TRUE
|
||||
KeyLength = 2048
|
||||
KeySpec = 1
|
||||
KeyUsage = 0xA0
|
||||
MachineKeySet = True
|
||||
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
|
||||
HashAlgorithm = sha256
|
||||
RequestType = PKCS10
|
||||
FriendlyName = "$Placeholder.printer.MBIE.govt.nz - 2026"
|
||||
[EnhancedKeyUsageExtension]
|
||||
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
|
||||
OID=1.3.6.1.5.5.7.3.2 ; Client Authentication
|
||||
[Extensions]
|
||||
; If your client operating system is Windows Server 2008, Windows Server 2008 R2, Windows Vista, or Windows 7
|
||||
; SANs can be included in the Extensions section by using the following text format. Note 2.5.29.17 is the OID for a SAN extension.
|
||||
|
||||
2.5.29.17 = "{text}"
|
||||
|
||||
_continue_ = "dns=$Placeholder.printer.MBIE.govt.nz&"
|
||||
_continue_ = "dns=$Placeholder.wd.govt.nz&"
|
||||
_continue_ = "dns=$Placeholder.ciga.ldap.govt.nz&"
|
||||
_continue_ = "dns=$Placeholder.printer.MBIE.govt.nz&"
|
||||
_continue_ = "dns=$Placeholder.wd.govt.nz&"
|
||||
_continue_ = "dns=$Placeholder.ciga.ldap.govt.nz&"
|
||||
'@
|
||||
|
||||
$invalidChars = [IO.Path]::GetInvalidFileNameChars()
|
||||
|
||||
Get-Content -Path $InputPath | ForEach-Object {
|
||||
$name = $_.Trim()
|
||||
if ([string]::IsNullOrWhiteSpace($name)) { return }
|
||||
|
||||
$safeName = -join ($name.ToCharArray() | ForEach-Object {
|
||||
if ($invalidChars -contains $_) { '_' } else { $_ }
|
||||
})
|
||||
|
||||
$content = $template.Replace('$Placeholder', $name)
|
||||
$outPath = Join-Path -Path $OutputDir -ChildPath ($safeName + '.inf')
|
||||
Set-Content -Path $outPath -Value $content -Encoding ascii
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user