[解決済み] Powershellで配列の値をソートする
2022-03-03 06:40:47
質問
MDMコンソールに接続するために使用しているAPIから取得した項目のリストを出力しようとしています。2つの関数があり、両方とも一緒に動作し、スクリプトの出力ですべてのデータを見ることができますが、このデータを列ヘッダーとして関数の1つからの変数名を使用して.csvファイルに並べ替えたいと思います。私はPSの初心者で、髪を引っ張り出しています。 変数が配列であることと、そこにあるすべての値はわかりますが、どのようにソートするのか、あるいは必要なデータを取得するためのより良い方法があるのか、全くわかりません。
#Current MDM Environment
$ev = "Q"
#Define MDM credentials to match environment from above
if($ev -eq "Q")
{
$Code = 'VbvmMGOV0Pd2lF4GurpBqnwD/R6mFmUKI6z3CKAY5tw='
$ui = 'MDMqualserver'
}
else{$Code = 'Pe8w/3jDREgse2gUu3UYZ28FHeafg0xcheu/AYwJ6PE='
$ui = 'MDMprodserver'}#>
#API Auth for MDM Console
$Auth = Get-Content -path 'C:\ProgramData\ScriptAuth\mobilityapi.txt'
$Contenttype = 'application/json'
$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy')
$path = "C:\users\username\desktop\$currentDate.csv"
Function get_all
{
$array =@()
#Define URL
$url = "https://$ui.company.gov/api/mdm/devices/extensivesearch?
pagesize=10000"
#Define Headers
$headers = New-Object "System.Collections.Generic.Dictionary[[String],
[String]]"
$headers.Add("aw-tenant-code", $Code)
$headers.Add("Authorization", $Auth)
#Send Rest Request
try{
$response = Invoke-RestMethod -uri $url -Headers $headers}
catch{
$error = "BDevice Info Not Found"}
#Close Connection
$ServicePoint = [System.Net.ServicePointManager]::FindServicePoint($url)
$SSP = $ServicePoint.CloseConnectionGroup("")
#Parse Device Info
$data = $response.DeviceExtensiveSearchResult.Devices.DeviceDetailsExt
$data | foreach {
$serial = $_.SerialNumber
$array += $serial
}
return $array
}
Function get_devattrib
{
Param([string]$serial)
$array = @()
#Define URL
$url = "https://$ui.company.gov/api/mdm/devices?
searchby=Serialnumber&id=$serial"
#Define Headers
$headers = New-Object "System.Collections.Generic.Dictionary[[String],
[String]]"
$headers.Add("aw-tenant-code", $Code)
$headers.Add("Authorization", $Auth)
$headers.Add("Content-Type", $Contenttype)
#Send Rest Request
try{
$response = Invoke-RestMethod -uri $url -Headers $headers}
catch{
return $false}
#Close Connection
$ServicePoint = [System.Net.ServicePointManager]::FindServicePoint($url)
$ServicePoint.CloseConnectionGroup("")
#Parse Device Info (#removed .Device from $data = $response.Device)
$data = $response
$data | foreach {
$ownership = $_.Ownership
$friendlyname = $_.DeviceFriendlyName
$platform = $_.Platform
$model = $_.Model
$snumber = $_.AssetNumber
$username = $_.UserName
$mac = $_.MacAddress
$phone = $_.PhoneNumber
$lastseen = $_.LastSeen
$enrollstatus = $_.EnrollmentStatus
$compliance = $_.ComplianceStatus
return [datetime]$lastseen, $ownership, $friendlyname, $platform, $model,
$snumber, $serial, $username, $mac, $phone, $enrollstatus, $compliance
}
}
$devices = @()
$getdevices = @()
$devices = get_all
foreach ($device in $devices){
$getdevices += get_devattrib $device
}
$getdevices
コンソールの各デバイスに対して、このようなデータが出力されます(会社のデータを隠すために、情報を汎用的にしています)。
<ブロッククオート真
2018年9月5日水曜日 8時33分21秒 法人所有のユーザー名 - assetnumber Apple iPad Pro with Wi-Fi + Cellular (128 GB Space Gray) 資産番号 シリアル nubmer ユーザー名 macアドレス phonenumber 在籍 非対応
A. コンソールの各デバイスの出力の最初に"true"が出て、その後にスペース(が付くようです)が出るのが理解できません。
[datetime]
)
B. このデータをすべて.csvファイルに格納する方法がわかりません。関数の前にパスを定義し、export-csvの使い方を知っていますが、ファイルに送信されるデータは、単に次のように表示されます。
#TYPE System.Boolean
ということで、最後の変数に何か問題があるのではと推測しています。ふー。
どのように解決するのですか?
でソートすることができます。
Sort-Object
.
$ArrayOfStrings = 's', 't', 'a', 'c', 'k'
$ArrayOfStrings | Sort-Object
関連
-
[解決済み] Angular 2のTypeScriptで配列にフィルタをかけるには?
-
[解決済み] 選択ソートが安定する理由と不安定な理由
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] インストールされたPowerShellのバージョンを確認する
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】アセンブリ言語での配列のバブルソート
-
[解決済み] Verilogで1次元と2次元のバイト配列を宣言して使用するには?
-
[解決済み] MIPSで配列を作る(アクセスする)方法
-
[解決済み] Luaで2次元配列を作成するには?
-
[解決済み] Rで3D行列をセットアップし、特定の要素にアクセスする
-
[解決済み] Scala:Arrayに要素を追加する最良の方法は何ですか?
-
[解決済み] MASMアセンブリの配列 (非常に混乱している初級者)
-
[解決済み] Rubyでハッシュの配列をソートする方法
-
[解決済み] MATLABでn次元の行列の各要素を反復処理するにはどうすればよいですか?
-
[解決済み] SwiftでUInt8バイト配列を文字列に変換する方法