我的剧本:
$computername=$args[0]
if ($args -eq $null) { $computername = Read-Host "enter computer name" }
Get-ADComputer -Id $computername -Properties * | select name,description
Run Code Online (Sandbox Code Playgroud)
如果我通过脚本传递参数,即:
get-ComputerName.ps1 computer01
它工作正常。但是,如果我跳过计算机,则希望它提示我,但出现此错误:
Get-ADComputer:无法验证参数“ Identity”上的参数。争论
一片空白。为参数提供有效值,然后尝试运行
再次命令。
在U:\ get-ADComputer-assigned-user.ps1:9 char:20
+ Get-ADComputer -Id $计算机名-属性* | 选择名称,描述
+ ~~~~~~~~~~~~~~
+ CategoryInfo:InvalidData:(:) [Get-ADComputer],ParameterBindingValidationException
+ FullyQualifiedErrorId:ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADComputer
我不知道如何使它工作。
不要使用自动变量 $args,而是为计算机名定义一个特定的必需参数:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true, Position=0)]
[string]$ComputerName
)
Get-ADComputer -Id $ComputerName -Properties * | Select-Object Name, Description
Run Code Online (Sandbox Code Playgroud)
这样您就可以像这样运行脚本:
./Get-ComputerName.ps1 -ComputerName computer01
Run Code Online (Sandbox Code Playgroud)
或像这样:
./Get-ComputerName.ps1 computer01
Run Code Online (Sandbox Code Playgroud)
如果缺少该参数,则会提示您输入:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true, Position=0)]
[string]$ComputerName
)
Get-ADComputer -Id $ComputerName -Properties * | Select-Object Name, Description
Run Code Online (Sandbox Code Playgroud)
如果您希望脚本抛出错误而不是提示缺少参数,则可以这样操作:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false, Position=0)]
[string]$ComputerName = $(throw 'Parameter missing!')
)
Get-ADComputer -Id $ComputerName -Properties * | Select-Object Name, Description
Run Code Online (Sandbox Code Playgroud)
检查 该 文件大约在PowerShell中的参数处理的进一步信息。
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |