[解決済み】Powershell: 引数 "xxx" を受け入れる位置パラメーターが見つからない。
質問
このエラーが実際に何を意味するのか理解しようとしています。このエラーに関する類似のヘルプリクエストを検索すると、パラメータの欠落、パイプの欠落、1行または複数行の使用、連結の問題などがありますが、どの回答も決定的な理由を示していないようです。ですから私は、問題はコードの形式だと考えています(そのため、追跡が非常に困難になっています)。
これは、アクティブ・ディレクトリのユーザーをターゲット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は、たくさんの引数を受け取ります。 これらの引数が定義されている場合、それぞれの引数の位置を定義することができます。
これにより、パラメーター名を指定せずにコマンドレットを呼び出すことができます。 つまり、以下のコマンドレットでは、path 属性の位置を 0 で定義することで、起動時に -Path の入力を省略することができ、その結果、以下の2つのコマンドレットが動作します。
Get-Item -Path C:\temp\thing.txt
Get-Item C:\temp\thing.txt
しかし、定義されている位置パラメーターよりも多くの引数を指定すると、エラーが発生します。
Get-Item C:\temp\thing.txt "*"
このコマンドレットは、2番目の位置パラメータをどのように受け取ればよいのか分からないため、エラーが発生します。 パラメータが何を意味しているかを伝えることで、これを修正することができます。
Get-Item C:\temp\thing.txt -Filter "*"
パラメータ名を正しく指定していないのはここだけのようなので、以下の行でエラーが発生していると推測されます。おそらく、=をパラメータとして、$usernameを別のパラメータとして扱っているのでしょう。
Set-ADUser $user -userPrincipalName = $newname
パラメータ名を$userに指定し、=を削除してみてください。
関連
-
[解決済み] PowerShellです。エラー "引数 ... を受け入れる位置パラメーターが見つかりません"
-
[解決済み] PowerShellで、変数が数値を保持しているかどうかをテストするにはどうすればよいですか?
-
[解決済み] Add-ADGroupMember が ID を持つオブジェクトを見つけられません。
-
[解決済み] Get-ADUser でのエラー: 無効な列挙コンテキスト
-
[解決済み] powershellでマウスクリックを送信するにはどうすればよいですか?
-
[解決済み] PowerShellで使用するGetType、変数の違いについて
-
[解決済み] Powershell:スクリプトにエラーが表示されないようにするにはどうすればよいですか?
-
[解決済み] PowerShellでCMDコマンドを実行する
-
[解決済み] powershellでToStringを使用して日付をフォーマットする
-
[解決済み] PowerShellスクリプトに引数を渡すにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] powershellでパラメータ'Path'がNULLのため引数を結合できないエラーの取得
-
[解決済み] スクリプト内の特定の場所にジャンプする
-
[解決済み] スクリプトへのパスが完全修飾されている場合、削除サーバーでのPowershellの実行に失敗する
-
[解決済み] PowerShellでファイルを一行ずつ読み込む
-
[解決済み] PowerShellでLDAPクエリ
-
[解決済み] PowerShellでファイルをダウンロードする
-
[解決済み] PowerShellで文字列がifで始まる場合 [重複]。
-
[解決済み] PowerShellスクリプトから終了コードを返す
-
[解決済み] PowerShell:PowerShellで配列オブジェクトを文字列に変換するにはどうすればよいですか?
-
[解決済み] Windows Server 2016で、すべてのPowerShellセッションのコマンド履歴を確認するにはどうすればよいですか?