[{"data":1,"prerenderedAt":1450},["ShallowReactive",2],{"post:\u002F2013\u002F09\u002F03\u002Fpowershell-find-installed-netapp-products\u002F":3},{"post":4,"newer":1399,"older":1409,"related":1418,"series":1448},{"id":5,"title":6,"body":7,"canonical":1379,"categories":1380,"date":1383,"description":13,"extension":1384,"featured":1385,"hero":1386,"image":1386,"meta":1387,"navigation":344,"path":1388,"readingTime":156,"seo":1389,"series":1386,"seriesOrder":1386,"sites":1390,"source":1392,"stem":1393,"tags":1394,"updated":1396,"url":1397,"__hash__":1398},"blog\u002Fblog\u002F2013\u002F09\u002F03\u002Fpowershell-find-installed-netapp-products.md","PowerShell: Find Installed NetApp Products",{"type":8,"value":9,"toc":1372},"minimark",[10,14,19,44,48,51,118,122,128,138,145,164,170,174,1351,1355,1368],[11,12,13],"p",{},"A slightly modified version of a scriptingGuy post to find NetApp software installed from a csv file (export from active directory)",[15,16,18],"h2",{"id":17},"requirements","Requirements",[20,21,22,26,29,32],"ul",{},[23,24,25],"li",{},"Windows PowerShell 2.0 or later.",[23,27,28],{},"The Remote Registry service running on every computer in the list.",[23,30,31],{},"An account with administrative rights on those computers, and network access to them.",[23,33,34,35,39,40,43],{},"A ",[36,37,38],"code",{},"computerlist.csv"," file in the same folder as the script, with a ",[36,41,42],{},"computername"," column (for example an Active Directory export).",[15,45,47],{"id":46},"parameters","Parameters",[11,49,50],{},"The script takes no parameters. Edit these values before running it.",[52,53,54,73],"table",{},[55,56,57],"thead",{},[58,59,60,64,67,70],"tr",{},[61,62,63],"th",{},"Name",[61,65,66],{},"Type",[61,68,69],{},"Required",[61,71,72],{},"Description",[74,75,76,101],"tbody",{},[58,77,78,84,87,90],{},[79,80,81],"td",{},[36,82,83],{},"$LikePublisher",[79,85,86],{},"String",[79,88,89],{},"Yes",[79,91,92,93,96,97,100],{},"Publisher name to search for. Matched with ",[36,94,95],{},"-like \"*value*\"","; defaults to ",[36,98,99],{},"NetApp",".",[58,102,103,107,110,112],{},[79,104,105],{},[36,106,38],{},[79,108,109],{},"File",[79,111,89],{},[79,113,114,115,117],{},"Input file in the script folder. Needs a ",[36,116,42],{}," column with one computer per row.",[15,119,121],{"id":120},"usage","Usage",[11,123,124,125,127],{},"Create ",[36,126,38],{}," next to the script.",[129,130,136],"pre",{"className":131,"code":133,"language":134,"meta":135},[132],"language-text","computername\nSERVER01\nSERVER02\n","text","",[36,137,133],{"__ignoreMap":135},[11,139,140,141,144],{},"Then run the script. Matches are shown as a table and also written to ",[36,142,143],{},"searchpublisher-NetApp_\u003CddMMyyyy>.csv"," in the script folder (an existing file with the same name is deleted first).",[129,146,150],{"className":147,"code":148,"language":149,"meta":135,"style":135},"language-powershell shiki shiki-themes github-dark",".\\Find-InstalledNetAppProducts.ps1\n","powershell",[36,151,152],{"__ignoreMap":135},[153,154,157,160],"span",{"class":155,"line":156},"line",1,[153,158,100],{"class":159},"s95oV",[153,161,163],{"class":162},"sDLfK","\\Find-InstalledNetAppProducts.ps1\n",[11,165,166,167,169],{},"To search for another vendor, change ",[36,168,83],{}," at the top of the script.",[15,171,173],{"id":172},"script","Script",[129,175,177],{"className":147,"code":176,"language":149,"meta":135,"style":135},"\u003C#\n.SYNOPSIS\n    Finds software from a given publisher (NetApp by default) installed on the computers in a CSV file.\n.DESCRIPTION\n    Reads computerlist.csv from the script folder (it needs a computername column), opens the\n    remote registry on each computer and walks HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall,\n    skipping KB entries. Entries whose publisher matches $LikePublisher are displayed as a table and\n    exported to searchpublisher-\u003Cpublisher>_\u003CddMMyyyy>.csv in the script folder.\n.EXAMPLE\n    .\\Find-InstalledNetAppProducts.ps1\n.NOTES\n    Author  : Thomas Lasswell (https:\u002F\u002Fwww.techcolumnist.com)\n    Version : 1.1 (2026-09-20)\n    History : 1.0 2013-09-03 Initial version.\n              1.1 2026-09-20 The CSV no longer starts with a #TYPE line.\n    Requires: Windows PowerShell 2.0+, Remote Registry service on the target computers\n    Based on a Scripting Guy post.\n#>\n$ErrorActionPreference = 'silentlycontinue'\n$exedir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent\n\n# Variables\n$LikePublisher = \"NetApp\"\n\n$infile = ($exedir + \"\\computerlist.csv\")\nWrite-Host \"$infile\"\n$computers = Import-Csv $infile\n$totalComputers = $computers.Count\n$currentDate = (Get-Date -UFormat \"%d%m%Y\")\n$outfile = ($exedir + \"\\\" + \"searchpublisher-\" + $LikePublisher + \"_\" + $currentDate + \".csv\")\nWrite-Host \"$outfile\"\n$checkforoutfile = Test-Path $outfile\nif ($checkforoutfile) {\n    Remove-Item $outfile\n}\n\n$counter1 = 0\n$array = @()\nforeach ($pc in $computers) {\n    $subkeys = $null\n    $computername = $pc.computername\n    $counter1++\n    Write-Progress -Activity \"Processing\" -Status \"Processing computer $counter1 of $totalComputers\" -PercentComplete (100 * ($counter1 \u002F $computers.Count)) -Id 1\n    Write-Progress \"Initializing\" \"Connecting to the Windows System: $computername\" -ParentId 1\n\n    # Define the variable to hold the location of currently installed programs.\n    $UninstallKey = \"SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\"\n\n    # Create an instance of the registry object and open the HKLM base key.\n    $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computername)\n\n    # Drill down into the Uninstall key using the OpenSubKey method.\n    $regkey = $reg.OpenSubKey($UninstallKey)\n\n    # Retrieve an array of strings that contain all the subkey names.\n    $subkeys = $regkey.GetSubKeyNames()\n\n    # Open each subkey and use the GetValue method to return the required values for each.\n    $counter2 = 0\n    foreach ($key in $subkeys) {\n        $counter2++\n        if ($subkeys.Count -eq $null) {\n            Write-Host \"Could not connect to $computername continuing ...\"\n        }\n        if (($subkeys.Count -ne $null) -and ($key -notlike \"*KB*\")) {\n            Write-Progress -Activity \"Gathering Key information on $computername\" -Status \"Processing Key $key\" -PercentComplete (100 * ($counter2 \u002F $subkeys.Count)) -ParentId 1\n            $thisKey = $UninstallKey + \"\\\\\" + $key\n            $thisSubKey = $reg.OpenSubKey($thisKey)\n            $obj = New-Object PSObject\n            $obj | Add-Member -MemberType NoteProperty -Name \"ComputerName\" -Value $computername\n            $obj | Add-Member -MemberType NoteProperty -Name \"DisplayName\" -Value $($thisSubKey.GetValue(\"DisplayName\"))\n            $obj | Add-Member -MemberType NoteProperty -Name \"DisplayVersion\" -Value $($thisSubKey.GetValue(\"DisplayVersion\"))\n            $obj | Add-Member -MemberType NoteProperty -Name \"InstallLocation\" -Value $($thisSubKey.GetValue(\"InstallLocation\"))\n            $obj | Add-Member -MemberType NoteProperty -Name \"Publisher\" -Value $($thisSubKey.GetValue(\"Publisher\"))\n            $array += $obj\n        }\n    }\n}\n\n# Show and export the matches.\n$array | Where-Object { $_.DisplayName -and $_.Publisher -like \"*$LikePublisher*\" } | Select-Object ComputerName, DisplayName, DisplayVersion, Publisher | Format-Table -AutoSize\n$array | Where-Object { $_.DisplayName -and $_.Publisher -like \"*$LikePublisher*\" } | Select-Object ComputerName, DisplayName, DisplayVersion, Publisher | Export-Csv $outfile -NoTypeInformation\n",[36,178,179,185,194,200,208,214,220,226,232,240,246,254,260,266,272,278,284,290,296,309,339,346,352,363,368,388,403,417,428,452,495,507,521,530,538,544,549,560,574,589,600,611,620,682,705,710,716,727,732,738,764,769,775,786,791,797,807,812,818,828,842,850,868,882,888,918,969,990,1001,1015,1044,1080,1112,1144,1176,1188,1193,1199,1204,1209,1215,1289],{"__ignoreMap":135},[153,180,181],{"class":155,"line":156},[153,182,184],{"class":183},"sAwPA","\u003C#\n",[153,186,188,190],{"class":155,"line":187},2,[153,189,100],{"class":162},[153,191,193],{"class":192},"snl16","SYNOPSIS\n",[153,195,197],{"class":155,"line":196},3,[153,198,199],{"class":183},"    Finds software from a given publisher (NetApp by default) installed on the computers in a CSV file.\n",[153,201,203,205],{"class":155,"line":202},4,[153,204,100],{"class":162},[153,206,207],{"class":192},"DESCRIPTION\n",[153,209,211],{"class":155,"line":210},5,[153,212,213],{"class":183},"    Reads computerlist.csv from the script folder (it needs a computername column), opens the\n",[153,215,217],{"class":155,"line":216},6,[153,218,219],{"class":183},"    remote registry on each computer and walks HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall,\n",[153,221,223],{"class":155,"line":222},7,[153,224,225],{"class":183},"    skipping KB entries. Entries whose publisher matches $LikePublisher are displayed as a table and\n",[153,227,229],{"class":155,"line":228},8,[153,230,231],{"class":183},"    exported to searchpublisher-\u003Cpublisher>_\u003CddMMyyyy>.csv in the script folder.\n",[153,233,235,237],{"class":155,"line":234},9,[153,236,100],{"class":162},[153,238,239],{"class":192},"EXAMPLE\n",[153,241,243],{"class":155,"line":242},10,[153,244,245],{"class":183},"    .\\Find-InstalledNetAppProducts.ps1\n",[153,247,249,251],{"class":155,"line":248},11,[153,250,100],{"class":162},[153,252,253],{"class":192},"NOTES\n",[153,255,257],{"class":155,"line":256},12,[153,258,259],{"class":183},"    Author  : Thomas Lasswell (https:\u002F\u002Fwww.techcolumnist.com)\n",[153,261,263],{"class":155,"line":262},13,[153,264,265],{"class":183},"    Version : 1.1 (2026-09-20)\n",[153,267,269],{"class":155,"line":268},14,[153,270,271],{"class":183},"    History : 1.0 2013-09-03 Initial version.\n",[153,273,275],{"class":155,"line":274},15,[153,276,277],{"class":183},"              1.1 2026-09-20 The CSV no longer starts with a #TYPE line.\n",[153,279,281],{"class":155,"line":280},16,[153,282,283],{"class":183},"    Requires: Windows PowerShell 2.0+, Remote Registry service on the target computers\n",[153,285,287],{"class":155,"line":286},17,[153,288,289],{"class":183},"    Based on a Scripting Guy post.\n",[153,291,293],{"class":155,"line":292},18,[153,294,295],{"class":183},"#>\n",[153,297,299,302,305],{"class":155,"line":298},19,[153,300,301],{"class":162},"$ErrorActionPreference",[153,303,304],{"class":192}," =",[153,306,308],{"class":307},"sU2Wk"," 'silentlycontinue'\n",[153,310,312,315,318,321,324,327,330,333,336],{"class":155,"line":311},20,[153,313,314],{"class":159},"$exedir ",[153,316,317],{"class":192},"=",[153,319,320],{"class":162}," Split-Path",[153,322,323],{"class":192}," -",[153,325,326],{"class":159},"Path ",[153,328,329],{"class":162},"$MyInvocation",[153,331,332],{"class":159},".MyCommand.Definition ",[153,334,335],{"class":192},"-",[153,337,338],{"class":159},"Parent\n",[153,340,342],{"class":155,"line":341},21,[153,343,345],{"emptyLinePlaceholder":344},true,"\n",[153,347,349],{"class":155,"line":348},22,[153,350,351],{"class":183},"# Variables\n",[153,353,355,358,360],{"class":155,"line":354},23,[153,356,357],{"class":159},"$LikePublisher ",[153,359,317],{"class":192},[153,361,362],{"class":307}," \"NetApp\"\n",[153,364,366],{"class":155,"line":365},24,[153,367,345],{"emptyLinePlaceholder":344},[153,369,371,374,376,379,382,385],{"class":155,"line":370},25,[153,372,373],{"class":159},"$infile ",[153,375,317],{"class":192},[153,377,378],{"class":159}," ($exedir ",[153,380,381],{"class":192},"+",[153,383,384],{"class":307}," \"\\computerlist.csv\"",[153,386,387],{"class":159},")\n",[153,389,391,394,397,400],{"class":155,"line":390},26,[153,392,393],{"class":162},"Write-Host",[153,395,396],{"class":307}," \"",[153,398,399],{"class":159},"$infile",[153,401,402],{"class":307},"\"\n",[153,404,406,409,411,414],{"class":155,"line":405},27,[153,407,408],{"class":159},"$computers ",[153,410,317],{"class":192},[153,412,413],{"class":162}," Import-Csv",[153,415,416],{"class":159}," $infile\n",[153,418,420,423,425],{"class":155,"line":419},28,[153,421,422],{"class":159},"$totalComputers ",[153,424,317],{"class":192},[153,426,427],{"class":159}," $computers.Count\n",[153,429,431,434,436,439,442,444,447,450],{"class":155,"line":430},29,[153,432,433],{"class":159},"$currentDate ",[153,435,317],{"class":192},[153,437,438],{"class":159}," (",[153,440,441],{"class":162},"Get-Date",[153,443,323],{"class":192},[153,445,446],{"class":159},"UFormat ",[153,448,449],{"class":307},"\"%d%m%Y\"",[153,451,387],{"class":159},[153,453,455,458,460,462,464,467,470,473,475,478,480,483,485,488,490,493],{"class":155,"line":454},30,[153,456,457],{"class":159},"$outfile ",[153,459,317],{"class":192},[153,461,378],{"class":159},[153,463,381],{"class":192},[153,465,466],{"class":307}," \"\\\"",[153,468,469],{"class":192}," +",[153,471,472],{"class":307}," \"searchpublisher-\"",[153,474,469],{"class":192},[153,476,477],{"class":159}," $LikePublisher ",[153,479,381],{"class":192},[153,481,482],{"class":307}," \"_\"",[153,484,469],{"class":192},[153,486,487],{"class":159}," $currentDate ",[153,489,381],{"class":192},[153,491,492],{"class":307}," \".csv\"",[153,494,387],{"class":159},[153,496,498,500,502,505],{"class":155,"line":497},31,[153,499,393],{"class":162},[153,501,396],{"class":307},[153,503,504],{"class":159},"$outfile",[153,506,402],{"class":307},[153,508,510,513,515,518],{"class":155,"line":509},32,[153,511,512],{"class":159},"$checkforoutfile ",[153,514,317],{"class":192},[153,516,517],{"class":162}," Test-Path",[153,519,520],{"class":159}," $outfile\n",[153,522,524,527],{"class":155,"line":523},33,[153,525,526],{"class":192},"if",[153,528,529],{"class":159}," ($checkforoutfile) {\n",[153,531,533,536],{"class":155,"line":532},34,[153,534,535],{"class":162},"    Remove-Item",[153,537,520],{"class":159},[153,539,541],{"class":155,"line":540},35,[153,542,543],{"class":159},"}\n",[153,545,547],{"class":155,"line":546},36,[153,548,345],{"emptyLinePlaceholder":344},[153,550,552,555,557],{"class":155,"line":551},37,[153,553,554],{"class":159},"$counter1 ",[153,556,317],{"class":192},[153,558,559],{"class":162}," 0\n",[153,561,563,566,568,571],{"class":155,"line":562},38,[153,564,565],{"class":159},"$array ",[153,567,317],{"class":192},[153,569,570],{"class":192}," @",[153,572,573],{"class":159},"()\n",[153,575,577,580,583,586],{"class":155,"line":576},39,[153,578,579],{"class":192},"foreach",[153,581,582],{"class":159}," ($pc ",[153,584,585],{"class":192},"in",[153,587,588],{"class":159}," $computers) {\n",[153,590,592,595,597],{"class":155,"line":591},40,[153,593,594],{"class":159},"    $subkeys ",[153,596,317],{"class":192},[153,598,599],{"class":162}," $null\n",[153,601,603,606,608],{"class":155,"line":602},41,[153,604,605],{"class":159},"    $computername ",[153,607,317],{"class":192},[153,609,610],{"class":159}," $pc.computername\n",[153,612,614,617],{"class":155,"line":613},42,[153,615,616],{"class":159},"    $counter1",[153,618,619],{"class":192},"++\n",[153,621,623,626,628,631,634,636,639,642,645,648,651,654,656,659,662,665,668,671,674,676,679],{"class":155,"line":622},43,[153,624,625],{"class":162},"    Write-Progress",[153,627,323],{"class":192},[153,629,630],{"class":159},"Activity ",[153,632,633],{"class":307},"\"Processing\"",[153,635,323],{"class":192},[153,637,638],{"class":159},"Status ",[153,640,641],{"class":307},"\"Processing computer ",[153,643,644],{"class":159},"$counter1",[153,646,647],{"class":307}," of ",[153,649,650],{"class":159},"$totalComputers",[153,652,653],{"class":307},"\"",[153,655,323],{"class":192},[153,657,658],{"class":159},"PercentComplete (",[153,660,661],{"class":162},"100",[153,663,664],{"class":192}," *",[153,666,667],{"class":159}," ($counter1 ",[153,669,670],{"class":192},"\u002F",[153,672,673],{"class":159}," $computers.Count)) ",[153,675,335],{"class":192},[153,677,678],{"class":159},"Id ",[153,680,681],{"class":162},"1\n",[153,683,685,687,690,693,696,698,700,703],{"class":155,"line":684},44,[153,686,625],{"class":162},[153,688,689],{"class":307}," \"Initializing\"",[153,691,692],{"class":307}," \"Connecting to the Windows System: ",[153,694,695],{"class":159},"$computername",[153,697,653],{"class":307},[153,699,323],{"class":192},[153,701,702],{"class":159},"ParentId ",[153,704,681],{"class":162},[153,706,708],{"class":155,"line":707},45,[153,709,345],{"emptyLinePlaceholder":344},[153,711,713],{"class":155,"line":712},46,[153,714,715],{"class":183},"    # Define the variable to hold the location of currently installed programs.\n",[153,717,719,722,724],{"class":155,"line":718},47,[153,720,721],{"class":159},"    $UninstallKey ",[153,723,317],{"class":192},[153,725,726],{"class":307}," \"SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\"\n",[153,728,730],{"class":155,"line":729},48,[153,731,345],{"emptyLinePlaceholder":344},[153,733,735],{"class":155,"line":734},49,[153,736,737],{"class":183},"    # Create an instance of the registry object and open the HKLM base key.\n",[153,739,741,744,746,749,752,755,758,761],{"class":155,"line":740},50,[153,742,743],{"class":159},"    $reg ",[153,745,317],{"class":192},[153,747,748],{"class":159}," [",[153,750,751],{"class":192},"Microsoft.Win32.RegistryKey",[153,753,754],{"class":159},"]::OpenRemoteBaseKey(",[153,756,757],{"class":307},"'LocalMachine'",[153,759,760],{"class":192},",",[153,762,763],{"class":159}," $computername)\n",[153,765,767],{"class":155,"line":766},51,[153,768,345],{"emptyLinePlaceholder":344},[153,770,772],{"class":155,"line":771},52,[153,773,774],{"class":183},"    # Drill down into the Uninstall key using the OpenSubKey method.\n",[153,776,778,781,783],{"class":155,"line":777},53,[153,779,780],{"class":159},"    $regkey ",[153,782,317],{"class":192},[153,784,785],{"class":159}," $reg.OpenSubKey($UninstallKey)\n",[153,787,789],{"class":155,"line":788},54,[153,790,345],{"emptyLinePlaceholder":344},[153,792,794],{"class":155,"line":793},55,[153,795,796],{"class":183},"    # Retrieve an array of strings that contain all the subkey names.\n",[153,798,800,802,804],{"class":155,"line":799},56,[153,801,594],{"class":159},[153,803,317],{"class":192},[153,805,806],{"class":159}," $regkey.GetSubKeyNames()\n",[153,808,810],{"class":155,"line":809},57,[153,811,345],{"emptyLinePlaceholder":344},[153,813,815],{"class":155,"line":814},58,[153,816,817],{"class":183},"    # Open each subkey and use the GetValue method to return the required values for each.\n",[153,819,821,824,826],{"class":155,"line":820},59,[153,822,823],{"class":159},"    $counter2 ",[153,825,317],{"class":192},[153,827,559],{"class":162},[153,829,831,834,837,839],{"class":155,"line":830},60,[153,832,833],{"class":192},"    foreach",[153,835,836],{"class":159}," ($key ",[153,838,585],{"class":192},[153,840,841],{"class":159}," $subkeys) {\n",[153,843,845,848],{"class":155,"line":844},61,[153,846,847],{"class":159},"        $counter2",[153,849,619],{"class":192},[153,851,853,856,859,862,865],{"class":155,"line":852},62,[153,854,855],{"class":192},"        if",[153,857,858],{"class":159}," ($subkeys.Count ",[153,860,861],{"class":192},"-eq",[153,863,864],{"class":162}," $null",[153,866,867],{"class":159},") {\n",[153,869,871,874,877,879],{"class":155,"line":870},63,[153,872,873],{"class":162},"            Write-Host",[153,875,876],{"class":307}," \"Could not connect to ",[153,878,695],{"class":159},[153,880,881],{"class":307}," continuing ...\"\n",[153,883,885],{"class":155,"line":884},64,[153,886,887],{"class":159},"        }\n",[153,889,891,893,896,899,901,904,907,909,912,915],{"class":155,"line":890},65,[153,892,855],{"class":192},[153,894,895],{"class":159}," (($subkeys.Count ",[153,897,898],{"class":192},"-ne",[153,900,864],{"class":162},[153,902,903],{"class":159},") ",[153,905,906],{"class":192},"-and",[153,908,836],{"class":159},[153,910,911],{"class":192},"-notlike",[153,913,914],{"class":307}," \"*KB*\"",[153,916,917],{"class":159},")) {\n",[153,919,921,924,926,928,931,933,935,937,939,942,945,947,949,951,953,955,958,960,963,965,967],{"class":155,"line":920},66,[153,922,923],{"class":162},"            Write-Progress",[153,925,323],{"class":192},[153,927,630],{"class":159},[153,929,930],{"class":307},"\"Gathering Key information on ",[153,932,695],{"class":159},[153,934,653],{"class":307},[153,936,323],{"class":192},[153,938,638],{"class":159},[153,940,941],{"class":307},"\"Processing Key ",[153,943,944],{"class":159},"$key",[153,946,653],{"class":307},[153,948,323],{"class":192},[153,950,658],{"class":159},[153,952,661],{"class":162},[153,954,664],{"class":192},[153,956,957],{"class":159}," ($counter2 ",[153,959,670],{"class":192},[153,961,962],{"class":159}," $subkeys.Count)) ",[153,964,335],{"class":192},[153,966,702],{"class":159},[153,968,681],{"class":162},[153,970,972,975,977,980,982,985,987],{"class":155,"line":971},67,[153,973,974],{"class":159},"            $thisKey ",[153,976,317],{"class":192},[153,978,979],{"class":159}," $UninstallKey ",[153,981,381],{"class":192},[153,983,984],{"class":307}," \"\\\\\"",[153,986,469],{"class":192},[153,988,989],{"class":159}," $key\n",[153,991,993,996,998],{"class":155,"line":992},68,[153,994,995],{"class":159},"            $thisSubKey ",[153,997,317],{"class":192},[153,999,1000],{"class":159}," $reg.OpenSubKey($thisKey)\n",[153,1002,1004,1007,1009,1012],{"class":155,"line":1003},69,[153,1005,1006],{"class":159},"            $obj ",[153,1008,317],{"class":192},[153,1010,1011],{"class":162}," New-Object",[153,1013,1014],{"class":159}," PSObject\n",[153,1016,1018,1020,1023,1026,1028,1031,1033,1036,1039,1041],{"class":155,"line":1017},70,[153,1019,1006],{"class":159},[153,1021,1022],{"class":192},"|",[153,1024,1025],{"class":162}," Add-Member",[153,1027,323],{"class":192},[153,1029,1030],{"class":159},"MemberType NoteProperty ",[153,1032,335],{"class":192},[153,1034,1035],{"class":159},"Name ",[153,1037,1038],{"class":307},"\"ComputerName\"",[153,1040,323],{"class":192},[153,1042,1043],{"class":159},"Value $computername\n",[153,1045,1047,1049,1051,1053,1055,1057,1059,1061,1064,1066,1069,1072,1075,1077],{"class":155,"line":1046},71,[153,1048,1006],{"class":159},[153,1050,1022],{"class":192},[153,1052,1025],{"class":162},[153,1054,323],{"class":192},[153,1056,1030],{"class":159},[153,1058,335],{"class":192},[153,1060,1035],{"class":159},[153,1062,1063],{"class":307},"\"DisplayName\"",[153,1065,323],{"class":192},[153,1067,1068],{"class":159},"Value ",[153,1070,1071],{"class":192},"$",[153,1073,1074],{"class":159},"($thisSubKey.GetValue(",[153,1076,1063],{"class":307},[153,1078,1079],{"class":159},"))\n",[153,1081,1083,1085,1087,1089,1091,1093,1095,1097,1100,1102,1104,1106,1108,1110],{"class":155,"line":1082},72,[153,1084,1006],{"class":159},[153,1086,1022],{"class":192},[153,1088,1025],{"class":162},[153,1090,323],{"class":192},[153,1092,1030],{"class":159},[153,1094,335],{"class":192},[153,1096,1035],{"class":159},[153,1098,1099],{"class":307},"\"DisplayVersion\"",[153,1101,323],{"class":192},[153,1103,1068],{"class":159},[153,1105,1071],{"class":192},[153,1107,1074],{"class":159},[153,1109,1099],{"class":307},[153,1111,1079],{"class":159},[153,1113,1115,1117,1119,1121,1123,1125,1127,1129,1132,1134,1136,1138,1140,1142],{"class":155,"line":1114},73,[153,1116,1006],{"class":159},[153,1118,1022],{"class":192},[153,1120,1025],{"class":162},[153,1122,323],{"class":192},[153,1124,1030],{"class":159},[153,1126,335],{"class":192},[153,1128,1035],{"class":159},[153,1130,1131],{"class":307},"\"InstallLocation\"",[153,1133,323],{"class":192},[153,1135,1068],{"class":159},[153,1137,1071],{"class":192},[153,1139,1074],{"class":159},[153,1141,1131],{"class":307},[153,1143,1079],{"class":159},[153,1145,1147,1149,1151,1153,1155,1157,1159,1161,1164,1166,1168,1170,1172,1174],{"class":155,"line":1146},74,[153,1148,1006],{"class":159},[153,1150,1022],{"class":192},[153,1152,1025],{"class":162},[153,1154,323],{"class":192},[153,1156,1030],{"class":159},[153,1158,335],{"class":192},[153,1160,1035],{"class":159},[153,1162,1163],{"class":307},"\"Publisher\"",[153,1165,323],{"class":192},[153,1167,1068],{"class":159},[153,1169,1071],{"class":192},[153,1171,1074],{"class":159},[153,1173,1163],{"class":307},[153,1175,1079],{"class":159},[153,1177,1179,1182,1185],{"class":155,"line":1178},75,[153,1180,1181],{"class":159},"            $array ",[153,1183,1184],{"class":192},"+=",[153,1186,1187],{"class":159}," $obj\n",[153,1189,1191],{"class":155,"line":1190},76,[153,1192,887],{"class":159},[153,1194,1196],{"class":155,"line":1195},77,[153,1197,1198],{"class":159},"    }\n",[153,1200,1202],{"class":155,"line":1201},78,[153,1203,543],{"class":159},[153,1205,1207],{"class":155,"line":1206},79,[153,1208,345],{"emptyLinePlaceholder":344},[153,1210,1212],{"class":155,"line":1211},80,[153,1213,1214],{"class":183},"# Show and export the matches.\n",[153,1216,1218,1220,1222,1225,1228,1231,1234,1236,1239,1242,1245,1248,1250,1253,1256,1258,1261,1264,1266,1269,1271,1274,1276,1279,1281,1284,1286],{"class":155,"line":1217},81,[153,1219,565],{"class":159},[153,1221,1022],{"class":192},[153,1223,1224],{"class":162}," Where-Object",[153,1226,1227],{"class":159}," { ",[153,1229,1230],{"class":162},"$_",[153,1232,1233],{"class":159},".DisplayName ",[153,1235,906],{"class":192},[153,1237,1238],{"class":162}," $_",[153,1240,1241],{"class":159},".Publisher ",[153,1243,1244],{"class":192},"-like",[153,1246,1247],{"class":307}," \"*",[153,1249,83],{"class":159},[153,1251,1252],{"class":307},"*\"",[153,1254,1255],{"class":159}," } ",[153,1257,1022],{"class":192},[153,1259,1260],{"class":162}," Select-Object",[153,1262,1263],{"class":159}," ComputerName",[153,1265,760],{"class":192},[153,1267,1268],{"class":159}," DisplayName",[153,1270,760],{"class":192},[153,1272,1273],{"class":159}," DisplayVersion",[153,1275,760],{"class":192},[153,1277,1278],{"class":159}," Publisher ",[153,1280,1022],{"class":192},[153,1282,1283],{"class":162}," Format-Table",[153,1285,323],{"class":192},[153,1287,1288],{"class":159},"AutoSize\n",[153,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1343,1346,1348],{"class":155,"line":1291},82,[153,1293,565],{"class":159},[153,1295,1022],{"class":192},[153,1297,1224],{"class":162},[153,1299,1227],{"class":159},[153,1301,1230],{"class":162},[153,1303,1233],{"class":159},[153,1305,906],{"class":192},[153,1307,1238],{"class":162},[153,1309,1241],{"class":159},[153,1311,1244],{"class":192},[153,1313,1247],{"class":307},[153,1315,83],{"class":159},[153,1317,1252],{"class":307},[153,1319,1255],{"class":159},[153,1321,1022],{"class":192},[153,1323,1260],{"class":162},[153,1325,1263],{"class":159},[153,1327,760],{"class":192},[153,1329,1268],{"class":159},[153,1331,760],{"class":192},[153,1333,1273],{"class":159},[153,1335,760],{"class":192},[153,1337,1278],{"class":159},[153,1339,1022],{"class":192},[153,1341,1342],{"class":162}," Export-Csv",[153,1344,1345],{"class":159}," $outfile ",[153,1347,335],{"class":192},[153,1349,1350],{"class":159},"NoTypeInformation\n",[15,1352,1354],{"id":1353},"notes","Notes",[20,1356,1357],{},[23,1358,1359,1360,1363,1364,1367],{},"Update 2026-09-20 (v1.1): the export now uses ",[36,1361,1362],{},"-NoTypeInformation",". Without it, Windows PowerShell 5.1 and earlier write a ",[36,1365,1366],{},"#TYPE ..."," line at the top of the CSV that breaks most importers.",[1369,1370,1371],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}",{"title":135,"searchDepth":187,"depth":187,"links":1373},[1374,1375,1376,1377,1378],{"id":17,"depth":187,"text":18},{"id":46,"depth":187,"text":47},{"id":120,"depth":187,"text":121},{"id":172,"depth":187,"text":173},{"id":1353,"depth":187,"text":1354},"techcolumnist",[1381,1382],"ps","scripts","2013-09-03T17:32:50Z","md",false,null,{},"\u002Fblog\u002F2013\u002F09\u002F03\u002Fpowershell-find-installed-netapp-products",{"title":6,"description":13},[1391,1379],"lasswell","both","blog\u002F2013\u002F09\u002F03\u002Fpowershell-find-installed-netapp-products",[1395,149],"netapp","2026-09-20T00:00:00Z","\u002F2013\u002F09\u002F03\u002Fpowershell-find-installed-netapp-products\u002F","Nk8yGOKtF2PScxzL6X65CTsyg3SG1gSrkNyhdRoF7hM",{"title":1400,"description":1401,"date":1402,"url":1403,"categories":1404,"tags":1406,"image":1386,"readingTime":156,"canonical":1379,"sites":1408,"series":1386,"seriesOrder":1386},"Create bootable USB from ISO – Rufus","A quick bookmark for Rufus, a free tool for creating a bootable USB drive from an ISO image.","2013-09-17T09:42:19Z","\u002F2013\u002F09\u002F17\u002Fcreate-bootable-usb-from-iso-rufus\u002F",[1405],"engineering",[1407],"bookmark",[1391,1379],{"title":1410,"description":1411,"date":1412,"url":1413,"categories":1414,"tags":1415,"image":1386,"readingTime":156,"canonical":1379,"sites":1417,"series":1386,"seriesOrder":1386},"vol maxfiles","I was asked the other day what happens with maxfiles. Maxfiles has to do with inodes on the NetApp.","2013-08-13T15:03:15Z","\u002F2013\u002F08\u002F13\u002Fvol-maxfiles\u002F",[1405],[1395,1416],"vol",[1391,1379],[1419,1430,1438],{"title":1420,"description":1421,"date":1422,"url":1423,"categories":1424,"tags":1426,"image":1386,"readingTime":202,"canonical":1379,"sites":1429,"series":1386,"seriesOrder":1386},"PowerShell: NetApp – Discover Every Volume Over 80 Percent Capacity","Sweep every ONTAP cluster you manage through the ONTAP REST API from PowerShell and report volumes above a capacity threshold, with a read-only login.","2025-08-13T14:00:00Z","\u002F2025\u002F08\u002F13\u002Fpowershell-netapp-discover-every-volume-over-80-percent-capacity\u002F",[1381,1382,1425],"dotps",[149,1395,1427,1428],"ontap","discovery",[1379],{"title":1431,"description":1432,"date":1433,"url":1434,"categories":1435,"tags":1436,"image":1386,"readingTime":156,"canonical":1379,"sites":1437,"series":1386,"seriesOrder":1386},"PowerShell: NetApp – Gather Volume Information","This is a simple script to gather volume information including dedupe schedule and autogrow settings.","2014-04-28T12:57:58Z","\u002F2014\u002F04\u002F28\u002Fpowershell-netapp-gather-volume-information\u002F",[1425,1381,1382],[1395,149,172],[1391,1379],{"title":1439,"description":1440,"date":1441,"url":1442,"categories":1443,"tags":1444,"image":1386,"readingTime":156,"canonical":1379,"sites":1447,"series":1386,"seriesOrder":1386},"PowerShell: OnCommand Core – Delete All Information Events","Found a solution on the NetApp communities for deleting the Informational events that plague OnCommand Core.","2014-02-10T11:56:00Z","\u002F2014\u002F02\u002F10\u002Foncommand-core-delete-all-information-events\u002F",[1381,1382],[1445,1395,1446,149],"dfm","oncommand",[1391,1379],{"doc":1386,"posts":1449},[],1790223956610]