Powershell 找不到接受参数的位置参数
我对脚本有问题。我检查固件类型,然后根据固件类型格式化硬盘。问题是,当它运行命令时,我得到了一个错误Powershell 找不到接受参数的位置参数,powershell,Powershell,我对脚本有问题。我检查固件类型,然后根据固件类型格式化硬盘。问题是,当它运行命令时,我得到了一个错误 New-Partition -DiskNumber 0 -GptType '{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}' $partsize_param -DriveLetter C 上面说 a positional parameter cannot be found that accept argument '-UseMaxiumSize' + cate
New-Partition -DiskNumber 0 -GptType '{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}' $partsize_param -DriveLetter C
上面说
a positional parameter cannot be found that accept argument '-UseMaxiumSize'
+ categoryinfo : invalidargument: (:) [New-Partition], ParameterBindingException
+ fullyqualifiederror: PositionalParameterNotFound, New-Partition
不能(轻松地)使用变量作为参数名。这是一个很好的使用情况。这使您可以轻松地在哈希表中构建一组动态参数
function clean_install_hdd () {
Switch (Get-BiosType) {
1 {$firmwaremode='Legacy BIOS'}
2 {$firmwaremode='UEFI Mode'}
Default {$firmwaremode='Unknown'}
}
Get-Disk
$PartitionSize = Read-Host "Partition size - How many GB or max to use all available space"
$Params = @{
DiskNumber = 0
DriveLetter = "C"
};
if ($PartitionSize -eq "max") {
$Params.Add("UseMaximumSize",$true);
} else {
$Params.Add("Size", $PartitionSize);
}
if ("$firmwaremode" -eq "Legacy BIOS") {
Clear-Disk 0 -RemoveData -RemoveOEM -Confirm:$false; Initialize-Disk 0 -PartitionStyle MBR -Confirm:$false;
$Params.Add("IsActive",$true);
New-Partition @Params | Format-Volume -FileSystem NTFS -NewFileSystemLabel Windows -ShortFileNameSupport $False -Confirm:$false
}
if ("$firmwaremode" -eq "UEFI Mode") {
Clear-Disk 0 -RemoveData -RemoveOEM -Confirm:$false; Initialize-Disk 0 -PartitionStyle GPT -Confirm:$false
$systemPart = New-Partition -DiskNumber 0 -GptType '{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}' -Size 100MB -DriveLetter S
& format.com "$($systemPart.DriveLetter):" /FS:FAT32 /Q /Y | Out-Null
New-Partition -DiskNumber 0 -GptType '{e3c9e316-0b5c-4db8-817d-f92df00215ae}' -Size 128MB
Write-Host $partsize_param
$Params.Add("GptType","{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}");
New-Partition @Params | Format-Volume -FileSystem NTFS -NewFileSystemLabel Windows -ShortFileNameSupport $False -Confirm:$false
}
}
不能(轻松地)使用变量作为参数名。这是一个很好的使用情况。这使您可以轻松地在哈希表中构建一组动态参数
function clean_install_hdd () {
Switch (Get-BiosType) {
1 {$firmwaremode='Legacy BIOS'}
2 {$firmwaremode='UEFI Mode'}
Default {$firmwaremode='Unknown'}
}
Get-Disk
$PartitionSize = Read-Host "Partition size - How many GB or max to use all available space"
$Params = @{
DiskNumber = 0
DriveLetter = "C"
};
if ($PartitionSize -eq "max") {
$Params.Add("UseMaximumSize",$true);
} else {
$Params.Add("Size", $PartitionSize);
}
if ("$firmwaremode" -eq "Legacy BIOS") {
Clear-Disk 0 -RemoveData -RemoveOEM -Confirm:$false; Initialize-Disk 0 -PartitionStyle MBR -Confirm:$false;
$Params.Add("IsActive",$true);
New-Partition @Params | Format-Volume -FileSystem NTFS -NewFileSystemLabel Windows -ShortFileNameSupport $False -Confirm:$false
}
if ("$firmwaremode" -eq "UEFI Mode") {
Clear-Disk 0 -RemoveData -RemoveOEM -Confirm:$false; Initialize-Disk 0 -PartitionStyle GPT -Confirm:$false
$systemPart = New-Partition -DiskNumber 0 -GptType '{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}' -Size 100MB -DriveLetter S
& format.com "$($systemPart.DriveLetter):" /FS:FAT32 /Q /Y | Out-Null
New-Partition -DiskNumber 0 -GptType '{e3c9e316-0b5c-4db8-817d-f92df00215ae}' -Size 128MB
Write-Host $partsize_param
$Params.Add("GptType","{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}");
New-Partition @Params | Format-Volume -FileSystem NTFS -NewFileSystemLabel Windows -ShortFileNameSupport $False -Confirm:$false
}
}
不能用字符串文字替换参数名,如下所示:
$p = "-ParamName"
Get-Stuff $p
解析器将把字符串“-ParamName”解释为位置参数的参数。由于找不到位置参数,因此引发错误
处理动态参数参数(如本例中所示)的正确方法是使用Splating:
$params = @{}
if ("$PartitionSize" -eq "max") {
$params['UseMaximumSize'] = $true
} else {
$params['Size'] = $PartitionSize
}
New-Partition @params
您可以将所有命名参数参数放入哈希表,也可以仅显示部分参数集:
if($firmwaremode -eq "Legacy BIOS") {
New-Partition -IsActive @params
} else {
New-Partition @params
}
不能用字符串文字替换参数名,如下所示:
$p = "-ParamName"
Get-Stuff $p
解析器将把字符串“-ParamName”解释为位置参数的参数。由于找不到位置参数,因此引发错误
处理动态参数参数(如本例中所示)的正确方法是使用Splating:
$params = @{}
if ("$PartitionSize" -eq "max") {
$params['UseMaximumSize'] = $true
} else {
$params['Size'] = $PartitionSize
}
New-Partition @params
您可以将所有命名参数参数放入哈希表,也可以仅显示部分参数集:
if($firmwaremode -eq "Legacy BIOS") {
New-Partition -IsActive @params
} else {
New-Partition @params
}
非常感谢。我理解。我尝试使用与我在批处理文件中制作相同内容时使用的类似方法,但在powershell中工作方式不同。谢谢。我理解。我尝试使用与我在批处理文件中制作相同内容时使用的类似方法,但在powershell中的工作方式不同。