1

CSV ファイルのオブジェクトを Get-CMUserDeviceAffinity の DeviceName パラメーターにパイプする方法を教えてください。

私はコンピュータのリストを持っています。このリスト内の各コンピューターのプライマリ ユーザーのリストを生成したいと考えています。私はpowershellとSCCMモジュールを使用していますが、これまでのところ、ワンライナーと、より冗長なものを試してみました。

ワンライナー失敗:

Import-CSV C:\temp\computerlist.csv |  Get-CMUserDeviceAffinity -DeviceName $($_.Name)

スクリプトの失敗:

$Computers = C:\computers.CSV
   ForEach ($Computer in $Computers) {
       Get-CMUserDeviceAffinity -DeviceName $_.Name

両方の結果は失敗します:

Cannot validate argument on parameter 'DeviceName'. The argument is null or empty. Provide
an argument that is not null or empty, and then try the command again.
At line:1 char:77
+ ... p\computerlist.csv |  Get-CMUserDeviceAffinity -DeviceName $($_.Name)
+                                                                ~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-CMUserDeviceAffinity], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ConfigurationManagement.Cmdlets.Collections.C
   ommands.GetUserDeviceAffinityCommand
4

2 に答える 2

5

foreach ループにパイプライン オブジェクトがないのに、自動パイプライン変数を使用しています。代わりに$_使用してください:$Computer

$Computers = C:\computers.CSV
   ForEach ($Computer in $Computers) {
       Get-CMUserDeviceAffinity -DeviceName $Computer.Name
}
于 2016-12-15T23:10:12.247 に答える
0

あなたのcsvがこのようなものであると仮定します
ここに画像の説明を入力

以下の PowerShell スクリプトの使用を試すことができます。

$Computers = Import-Csv C:\computerlist.CSV
   ForEach ($Computer in $Computers) {
      $Name = (Get-CMUserDeviceAffinity -DeviceName $Computer.Name).uniqueusername
      write-host "$($computer.name) ------> $($Name) "
}

出力:
ここに画像の説明を入力

于 2016-12-16T12:20:05.110 に答える