gpt4 book ai didi

Powershell:找不到接受参数 "xxx"的位置参数

转载 作者:行者123 更新时间:2023-12-02 23:32:25 25 4
gpt4 key购买 nike

我试图理解这个错误的实际含义。到目前为止,对该错误的类似帮助请求的搜索范围包括缺少参数、缺少管道、使用单行或多行以及串联问题,但似乎没有一个答案给出明确的原因。所以我认为问题是代码格式(这使得追踪变得更加困难)。

这是我编写的脚本,用于将每个目标 OU 的事件目录用户从现在的任何格式重命名为名.姓氏格式。

我在 AD 中创建了一个测试 OU,其中一些用户会触发错误,而另一些则不会。但是,不应该给我错误的用户给了我“找不到接受参数“firstname.surname”的位置参数

我看不出脚本有什么问题,但希望有人能给我一些指示。

Import-Module ActiveDirectory

$users = $null

$users = Get-ADUser -SearchBase "ou=Testing,ou=Users,dc=my,dc=domain" -Filter * -Properties *
foreach ($user in $users) {
Write-Host "Processing... $($user)"
$newname = $null

# Check first/last name is set
if (!$user.givenName -or !$user.Surname) {
Write-Host "$($user) does not have first name or last name set. Please correct, skipping user."
continue
} else {
$newname = ("$($user.givenName).$($user.Surname)")

#Check if new username already exists
if (dsquery user -samid $newname) {
Write-Host "$($user) requires altered username with initial."

if (!$user.Initials) {
Write-Host "$($user) does not have any initials set. Please correct, skipping user."
continue
}

$newname = ("$($user.givenName)$($user.Initials).$($user.Surname)")

#Check if altered new username already exists
if (dsquery user -samid $newname) {
Write-Host "$($user) requires manual change. Please correct, skipping user."
continue
}
}

try {
#Change UPN
Set-ADUser $user -userPrincipalName = $newname
#Change DN
Rename-ADObject -identity $user -Newname $newname
} catch {
Write-Host "Error when renaming $($user). Error is: $($_.Exception.Message). User requires manual change. Please correct, skipping user."
continue
}
}
}

最佳答案

powershell 中的 Cmdlet 接受一堆参数。定义这些参数后,您可以为每个参数定义一个位置。

这允许您在不指定参数名称的情况下调用 cmdlet。因此,对于以下 cmdlet,路径属性的位置定义为 0,允许您在调用它时跳过键入 -Path,因此以下两者都将起作用。

Get-Item -Path C:\temp\thing.txt
Get-Item C:\temp\thing.txt

但是,如果您指定的参数多于定义的位置参数,则会出现错误。

Get-Item C:\temp\thing.txt "*"

由于此 cmdlet 不知道如何接受第二个位置参数,因此会出现错误。您可以通过告诉它参数的含义来解决此问题。

Get-Item C:\temp\thing.txt -Filter "*"

我假设您在以下代码行中收到错误,因为它似乎是您没有正确指定参数名称的唯一地方,并且可能它将 = 视为参数,而将 $username 视为另一个参数。

Set-ADUser $user -userPrincipalName = $newname

尝试为 $user 指定参数名称并删除 =

关于Powershell:找不到接受参数 "xxx"的位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com