質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

Q&A

0回答

585閲覧

Get-ADComputerで変数を使いたい

kanade081218

総合スコア1

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

0グッド

0クリップ

投稿2023/06/01 06:39

実現したいこと

Get-ADComputerを使って複数のコンピューターの情報を取得したいと考えています。

Get-ADComputer -Filter 'Name -eq "変数名"' | Select-Object {$_.name, $_.DistinguishedName}

とするとエラーが出てしまうので解決したいです。

書いたコード

CSVに書かれているコンピューター名をImport-Csvで取得しそれを-Filter Name -eqにいれることで、取得した全てのコンピューターの情報を得ようとしています。

#ps1ファイル実行時の引数(ファイル名)を見ている Param( $Arg1 = ".\hogeCSV.csv" ) #CSVファイルからコンピューター名を取得 $computers = Import-Csv $Arg1 -Encoding UTF8 #取得したコンピューター名でフィルターをかけてそのコンピューターの情報を得ようとしている Get-ADComputer -Filter 'Name -eq """$computers"""' | Select-Object {$_.name, $_.DistinguishedName}

発生している問題・エラーメッセージ

Get-ADComputer : クエリ解析エラー: 'Name -eq """$computers"""' エラーメッセージ: 'syntax error' 場所: '12'。 + Get-ADComputer -Filter 'Name -eq """$computers"""' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +CategoryInfo : ParserError: (:) [Get-ADComputer], ADFilterParsingException +FullQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

試したこと

$computers = cat -Encoding UTF8 -Arg1

として取得したデータを文字列として取り入れてみたり、それをForeach文で回してみたりしましたがいずれも思うような結果は得られませんでした。

補足情報(FW/ツールのバージョンなど)

できるだけの情報は書きましたが、必要な実行結果などありましたらよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ccc-

2023/06/01 07:28

Get-ADComputer -Filter * | Where-Object {$computers -eq $_.Name} | Select-Object Name,DistinguishedName で動作しますか?
kanade081218

2023/06/01 08:06

特にエラーは出なかったのですが、実行結果も出ませんでした;;
ccc-

2023/06/01 08:26

Write-host $computers を実行すると何か表示しますか?
kanade081218

2023/06/01 08:33

先ほどのGet-ADComputer -Filter * | Where-Object {$computers -eq $_.Name} | Select-Object Name,DistinguishedNameの後にWrite-host $computersを実行したところ、 @{computer_name = aaa} @{computer_name = bbb} @{computer_name = ccc} と表示されました。 CSVの中身が "computer_name" "aaa" "bbb" "ccc" となっているので、それだと思われます。
ccc-

2023/06/01 08:52

CSVファイルになっていないようです(カンマ区切りになっていない)ので、 ちょっと強引ですが以下に変更してお試しいただけますか? $computers = Import-Csv $Arg1 -Encoding UTF8 ↓ $computers = @(Get-Content -LiteralPath $Arg1 -Encoding UTF8) -replace '"',''
ccc-

2023/06/01 10:24

Import-Csvを使用する場合は以下をお試しください。 $computers = @((Import-Csv $Arg1 -Encoding UTF8 -Header "Title" | Select-Object -skip 1).Title)
kanade081218

2023/06/02 01:20

CSVファイルの方は盲点でした💦 解決しました。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問