[{"data":1,"prerenderedAt":1510},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fpowershell-tips":3},{"doc":4,"prev":1473,"next":1480,"resolvedType":8,"readingMinutes":130,"audience":1484,"checklist":1488,"related":1492},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fpowershell-tips","PowerShell 实用技巧","PowerShell 常用命令、脚本编写、文件操作、系统管理与自动化","article",null,"dev-environment","开发环境","2026-02-27","i-carbon-code",{"type":15,"value":16,"toc":1452},"minimark",[17,21,31,34,38,58,61,365,368,519,522,709,712,873,876,1032,1035,1041,1268,1271,1334,1337,1340,1344,1359,1362,1373,1376,1387,1390,1393,1396,1400,1407,1411,1414,1448],[18,19,6],"h1",{"id":20},"powershell-实用技巧",[22,23,24,25,30],"p",{},"终端美化见 ",[26,27,29],"a",{"href":28},"\u002Fdocs\u002Fterminal-setup","终端配置与美化","，本文聚焦 PowerShell 实用命令与脚本技巧。",[22,32,33],{},"PowerShell 的强项不是“把 Bash 命令改写一遍”，而是对象管道、系统管理和 Windows 原生自动化。如果你能把这一点用起来，效率会比只把它当普通命令行高很多。",[35,36,37],"h2",{"id":37},"推荐掌握顺序",[39,40,41,45,48,55],"ol",{},[42,43,44],"li",{},"先学文件操作和文本搜索",[42,46,47],{},"再学进程、服务和网络诊断",[42,49,50,51],{},"再学环境变量和 ",[52,53,54],"code",{},"$PROFILE",[42,56,57],{},"最后再写可复用函数和脚本",[35,59,60],{"id":60},"文件操作",[62,63,68],"pre",{"className":64,"code":65,"language":66,"meta":67,"style":67},"language-powershell shiki shiki-themes github-light github-dark","# 批量重命名\nGet-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace 'old', 'new' }\n\n# 查找大文件（>100MB）\nGet-ChildItem -Recurse | Where-Object { $_.Length -gt 100MB } | Sort-Object Length -Descending | Select-Object FullName, @{N='SizeMB';E={[math]::Round($_.Length\u002F1MB,1)}}\n\n# 递归删除指定文件\nGet-ChildItem -Recurse -Filter \"*.log\" | Remove-Item -Force\n\n# 计算文件夹大小\n(Get-ChildItem -Recurse | Measure-Object -Property Length -Sum).Sum \u002F 1GB\n\n# 比较两个文件夹\nCompare-Object (Get-ChildItem folder1) (Get-ChildItem folder2) -Property Name\n","powershell","",[52,69,70,79,128,135,141,245,250,256,284,289,295,330,335,341],{"__ignoreMap":67},[71,72,75],"span",{"class":73,"line":74},"line",1,[71,76,78],{"class":77},"sJ8bj","# 批量重命名\n",[71,80,82,86,90,94,97,100,103,106,109,112,115,119,122,125],{"class":73,"line":81},2,[71,83,85],{"class":84},"sj4cs","Get-ChildItem",[71,87,89],{"class":88},"szBVR"," *",[71,91,93],{"class":92},"sVt8B",".txt ",[71,95,96],{"class":88},"|",[71,98,99],{"class":84}," Rename-Item",[71,101,102],{"class":88}," -",[71,104,105],{"class":92},"NewName { ",[71,107,108],{"class":84},"$_",[71,110,111],{"class":92},".Name ",[71,113,114],{"class":88},"-replace",[71,116,118],{"class":117},"sZZnC"," 'old'",[71,120,121],{"class":88},",",[71,123,124],{"class":117}," 'new'",[71,126,127],{"class":92}," }\n",[71,129,131],{"class":73,"line":130},3,[71,132,134],{"emptyLinePlaceholder":133},true,"\n",[71,136,138],{"class":73,"line":137},4,[71,139,140],{"class":77},"# 查找大文件（>100MB）\n",[71,142,144,146,148,151,153,156,159,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,206,209,212,215,217,220,223,226,228,231,234,237,240,242],{"class":73,"line":143},5,[71,145,85],{"class":84},[71,147,102],{"class":88},[71,149,150],{"class":92},"Recurse ",[71,152,96],{"class":88},[71,154,155],{"class":84}," Where-Object",[71,157,158],{"class":92}," { ",[71,160,108],{"class":84},[71,162,163],{"class":92},".Length ",[71,165,166],{"class":88},"-gt",[71,168,169],{"class":84}," 100",[71,171,172],{"class":88},"MB",[71,174,175],{"class":92}," } ",[71,177,96],{"class":88},[71,179,180],{"class":84}," Sort-Object",[71,182,183],{"class":92}," Length ",[71,185,186],{"class":88},"-",[71,188,189],{"class":92},"Descending ",[71,191,96],{"class":88},[71,193,194],{"class":84}," Select-Object",[71,196,197],{"class":92}," FullName",[71,199,121],{"class":88},[71,201,202],{"class":88}," @",[71,204,205],{"class":92},"{N",[71,207,208],{"class":88},"=",[71,210,211],{"class":117},"'SizeMB'",[71,213,214],{"class":92},";E",[71,216,208],{"class":88},[71,218,219],{"class":92},"{[",[71,221,222],{"class":88},"math",[71,224,225],{"class":92},"]::Round(",[71,227,108],{"class":84},[71,229,230],{"class":92},".Length",[71,232,233],{"class":88},"\u002F",[71,235,236],{"class":84},"1",[71,238,239],{"class":88},"MB,",[71,241,236],{"class":84},[71,243,244],{"class":92},")}}\n",[71,246,248],{"class":73,"line":247},6,[71,249,134],{"emptyLinePlaceholder":133},[71,251,253],{"class":73,"line":252},7,[71,254,255],{"class":77},"# 递归删除指定文件\n",[71,257,259,261,263,265,267,270,273,276,279,281],{"class":73,"line":258},8,[71,260,85],{"class":84},[71,262,102],{"class":88},[71,264,150],{"class":92},[71,266,186],{"class":88},[71,268,269],{"class":92},"Filter ",[71,271,272],{"class":117},"\"*.log\"",[71,274,275],{"class":88}," |",[71,277,278],{"class":84}," Remove-Item",[71,280,102],{"class":88},[71,282,283],{"class":92},"Force\n",[71,285,287],{"class":73,"line":286},9,[71,288,134],{"emptyLinePlaceholder":133},[71,290,292],{"class":73,"line":291},10,[71,293,294],{"class":77},"# 计算文件夹大小\n",[71,296,298,301,303,305,307,309,312,314,317,319,322,324,327],{"class":73,"line":297},11,[71,299,300],{"class":92},"(",[71,302,85],{"class":84},[71,304,102],{"class":88},[71,306,150],{"class":92},[71,308,96],{"class":88},[71,310,311],{"class":84}," Measure-Object",[71,313,102],{"class":88},[71,315,316],{"class":92},"Property Length ",[71,318,186],{"class":88},[71,320,321],{"class":92},"Sum).Sum ",[71,323,233],{"class":88},[71,325,326],{"class":84}," 1",[71,328,329],{"class":88},"GB\n",[71,331,333],{"class":73,"line":332},12,[71,334,134],{"emptyLinePlaceholder":133},[71,336,338],{"class":73,"line":337},13,[71,339,340],{"class":77},"# 比较两个文件夹\n",[71,342,344,347,350,352,355,357,360,362],{"class":73,"line":343},14,[71,345,346],{"class":84},"Compare-Object",[71,348,349],{"class":92}," (",[71,351,85],{"class":84},[71,353,354],{"class":92}," folder1) (",[71,356,85],{"class":84},[71,358,359],{"class":92}," folder2) ",[71,361,186],{"class":88},[71,363,364],{"class":92},"Property Name\n",[35,366,367],{"id":367},"文本处理",[62,369,371],{"className":64,"code":370,"language":66,"meta":67,"style":67},"# 搜索文件内容（类似 grep）\nSelect-String -Path *.ts -Pattern \"TODO\"\nGet-ChildItem -Recurse -Filter \"*.ts\" | Select-String \"import.*vue\"\n\n# 替换文件内容\n(Get-Content file.txt) -replace 'old', 'new' | Set-Content file.txt\n\n# 统计行数\n(Get-Content file.txt | Measure-Object -Line).Lines\n\n# 去重排序\nGet-Content list.txt | Sort-Object -Unique | Set-Content sorted.txt\n",[52,372,373,378,402,425,429,434,460,464,469,487,491,496],{"__ignoreMap":67},[71,374,375],{"class":73,"line":74},[71,376,377],{"class":77},"# 搜索文件内容（类似 grep）\n",[71,379,380,383,385,388,391,394,396,399],{"class":73,"line":81},[71,381,382],{"class":84},"Select-String",[71,384,102],{"class":88},[71,386,387],{"class":92},"Path ",[71,389,390],{"class":88},"*",[71,392,393],{"class":92},".ts ",[71,395,186],{"class":88},[71,397,398],{"class":92},"Pattern ",[71,400,401],{"class":117},"\"TODO\"\n",[71,403,404,406,408,410,412,414,417,419,422],{"class":73,"line":130},[71,405,85],{"class":84},[71,407,102],{"class":88},[71,409,150],{"class":92},[71,411,186],{"class":88},[71,413,269],{"class":92},[71,415,416],{"class":117},"\"*.ts\"",[71,418,275],{"class":88},[71,420,421],{"class":84}," Select-String",[71,423,424],{"class":117}," \"import.*vue\"\n",[71,426,427],{"class":73,"line":137},[71,428,134],{"emptyLinePlaceholder":133},[71,430,431],{"class":73,"line":143},[71,432,433],{"class":77},"# 替换文件内容\n",[71,435,436,438,441,444,446,448,450,452,454,457],{"class":73,"line":247},[71,437,300],{"class":92},[71,439,440],{"class":84},"Get-Content",[71,442,443],{"class":92}," file.txt) ",[71,445,114],{"class":88},[71,447,118],{"class":117},[71,449,121],{"class":88},[71,451,124],{"class":117},[71,453,275],{"class":88},[71,455,456],{"class":84}," Set-Content",[71,458,459],{"class":92}," file.txt\n",[71,461,462],{"class":73,"line":252},[71,463,134],{"emptyLinePlaceholder":133},[71,465,466],{"class":73,"line":258},[71,467,468],{"class":77},"# 统计行数\n",[71,470,471,473,475,478,480,482,484],{"class":73,"line":286},[71,472,300],{"class":92},[71,474,440],{"class":84},[71,476,477],{"class":92}," file.txt ",[71,479,96],{"class":88},[71,481,311],{"class":84},[71,483,102],{"class":88},[71,485,486],{"class":92},"Line).Lines\n",[71,488,489],{"class":73,"line":291},[71,490,134],{"emptyLinePlaceholder":133},[71,492,493],{"class":73,"line":297},[71,494,495],{"class":77},"# 去重排序\n",[71,497,498,500,503,505,507,509,512,514,516],{"class":73,"line":332},[71,499,440],{"class":84},[71,501,502],{"class":92}," list.txt ",[71,504,96],{"class":88},[71,506,180],{"class":84},[71,508,102],{"class":88},[71,510,511],{"class":92},"Unique ",[71,513,96],{"class":88},[71,515,456],{"class":84},[71,517,518],{"class":92}," sorted.txt\n",[35,520,521],{"id":521},"网络工具",[62,523,525],{"className":64,"code":524,"language":66,"meta":67,"style":67},"# 下载文件\nInvoke-WebRequest -Uri \"https:\u002F\u002Fexample.com\u002Ffile.zip\" -OutFile \"file.zip\"\n# 简写\niwr \"https:\u002F\u002Fexample.com\u002Ffile.zip\" -o \"file.zip\"\n\n# REST API 调用\nInvoke-RestMethod -Uri \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Foctocat\" | Select-Object login, name\n\n# POST 请求\nInvoke-RestMethod -Method Post -Uri \"https:\u002F\u002Fapi.example.com\u002Fdata\" -Body (@{key=\"value\"} | ConvertTo-Json) -ContentType \"application\u002Fjson\"\n\n# 端口检测\nTest-NetConnection example.com -Port 443\n\n# DNS 查询\nResolve-DnsName example.com\n",[52,526,527,532,553,558,572,576,581,605,609,614,665,669,674,690,694,700],{"__ignoreMap":67},[71,528,529],{"class":73,"line":74},[71,530,531],{"class":77},"# 下载文件\n",[71,533,534,537,539,542,545,547,550],{"class":73,"line":81},[71,535,536],{"class":84},"Invoke-WebRequest",[71,538,102],{"class":88},[71,540,541],{"class":92},"Uri ",[71,543,544],{"class":117},"\"https:\u002F\u002Fexample.com\u002Ffile.zip\"",[71,546,102],{"class":88},[71,548,549],{"class":92},"OutFile ",[71,551,552],{"class":117},"\"file.zip\"\n",[71,554,555],{"class":73,"line":130},[71,556,557],{"class":77},"# 简写\n",[71,559,560,563,565,567,570],{"class":73,"line":137},[71,561,562],{"class":92},"iwr ",[71,564,544],{"class":117},[71,566,102],{"class":88},[71,568,569],{"class":92},"o ",[71,571,552],{"class":117},[71,573,574],{"class":73,"line":143},[71,575,134],{"emptyLinePlaceholder":133},[71,577,578],{"class":73,"line":247},[71,579,580],{"class":77},"# REST API 调用\n",[71,582,583,586,588,590,593,595,597,600,602],{"class":73,"line":252},[71,584,585],{"class":84},"Invoke-RestMethod",[71,587,102],{"class":88},[71,589,541],{"class":92},[71,591,592],{"class":117},"\"https:\u002F\u002Fapi.github.com\u002Fusers\u002Foctocat\"",[71,594,275],{"class":88},[71,596,194],{"class":84},[71,598,599],{"class":92}," login",[71,601,121],{"class":88},[71,603,604],{"class":92}," name\n",[71,606,607],{"class":73,"line":258},[71,608,134],{"emptyLinePlaceholder":133},[71,610,611],{"class":73,"line":286},[71,612,613],{"class":77},"# POST 请求\n",[71,615,616,618,620,623,625,627,630,632,635,638,641,643,646,649,651,654,657,659,662],{"class":73,"line":291},[71,617,585],{"class":84},[71,619,102],{"class":88},[71,621,622],{"class":92},"Method Post ",[71,624,186],{"class":88},[71,626,541],{"class":92},[71,628,629],{"class":117},"\"https:\u002F\u002Fapi.example.com\u002Fdata\"",[71,631,102],{"class":88},[71,633,634],{"class":92},"Body (",[71,636,637],{"class":88},"@",[71,639,640],{"class":92},"{key",[71,642,208],{"class":88},[71,644,645],{"class":117},"\"value\"",[71,647,648],{"class":92},"} ",[71,650,96],{"class":88},[71,652,653],{"class":84}," ConvertTo-Json",[71,655,656],{"class":92},") ",[71,658,186],{"class":88},[71,660,661],{"class":92},"ContentType ",[71,663,664],{"class":117},"\"application\u002Fjson\"\n",[71,666,667],{"class":73,"line":297},[71,668,134],{"emptyLinePlaceholder":133},[71,670,671],{"class":73,"line":332},[71,672,673],{"class":77},"# 端口检测\n",[71,675,676,679,682,684,687],{"class":73,"line":337},[71,677,678],{"class":84},"Test-NetConnection",[71,680,681],{"class":84}," example.com",[71,683,102],{"class":88},[71,685,686],{"class":92},"Port ",[71,688,689],{"class":84},"443\n",[71,691,692],{"class":73,"line":343},[71,693,134],{"emptyLinePlaceholder":133},[71,695,697],{"class":73,"line":696},15,[71,698,699],{"class":77},"# DNS 查询\n",[71,701,703,706],{"class":73,"line":702},16,[71,704,705],{"class":84},"Resolve-DnsName",[71,707,708],{"class":84}," example.com\n",[35,710,711],{"id":711},"进程与服务",[62,713,715],{"className":64,"code":714,"language":66,"meta":67,"style":67},"# 查找占用端口的进程\nGet-NetTCPConnection -LocalPort 3000 | Select-Object OwningProcess\nGet-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess\n\n# 结束进程\nStop-Process -Name \"node\" -Force\nGet-Process | Where-Object { $_.ProcessName -match \"node\" } | Stop-Process\n\n# 服务管理\nGet-Service | Where-Object { $_.Status -eq \"Running\" }\nStart-Service -Name \"ssh-agent\"\nStop-Service -Name \"ssh-agent\"\n",[52,716,717,722,742,763,767,772,789,817,821,826,850,862],{"__ignoreMap":67},[71,718,719],{"class":73,"line":74},[71,720,721],{"class":77},"# 查找占用端口的进程\n",[71,723,724,727,729,732,735,737,739],{"class":73,"line":81},[71,725,726],{"class":84},"Get-NetTCPConnection",[71,728,102],{"class":88},[71,730,731],{"class":92},"LocalPort ",[71,733,734],{"class":84},"3000",[71,736,275],{"class":88},[71,738,194],{"class":84},[71,740,741],{"class":92}," OwningProcess\n",[71,743,744,747,749,752,754,756,758,760],{"class":73,"line":130},[71,745,746],{"class":84},"Get-Process",[71,748,102],{"class":88},[71,750,751],{"class":92},"Id (",[71,753,726],{"class":84},[71,755,102],{"class":88},[71,757,731],{"class":92},[71,759,734],{"class":84},[71,761,762],{"class":92},").OwningProcess\n",[71,764,765],{"class":73,"line":137},[71,766,134],{"emptyLinePlaceholder":133},[71,768,769],{"class":73,"line":143},[71,770,771],{"class":77},"# 结束进程\n",[71,773,774,777,779,782,785,787],{"class":73,"line":247},[71,775,776],{"class":84},"Stop-Process",[71,778,102],{"class":88},[71,780,781],{"class":92},"Name ",[71,783,784],{"class":117},"\"node\"",[71,786,102],{"class":88},[71,788,283],{"class":92},[71,790,791,793,795,797,799,801,804,807,810,812,814],{"class":73,"line":252},[71,792,746],{"class":84},[71,794,275],{"class":88},[71,796,155],{"class":84},[71,798,158],{"class":92},[71,800,108],{"class":84},[71,802,803],{"class":92},".ProcessName ",[71,805,806],{"class":88},"-match",[71,808,809],{"class":117}," \"node\"",[71,811,175],{"class":92},[71,813,96],{"class":88},[71,815,816],{"class":84}," Stop-Process\n",[71,818,819],{"class":73,"line":258},[71,820,134],{"emptyLinePlaceholder":133},[71,822,823],{"class":73,"line":286},[71,824,825],{"class":77},"# 服务管理\n",[71,827,828,831,833,835,837,839,842,845,848],{"class":73,"line":291},[71,829,830],{"class":84},"Get-Service",[71,832,275],{"class":88},[71,834,155],{"class":84},[71,836,158],{"class":92},[71,838,108],{"class":84},[71,840,841],{"class":92},".Status ",[71,843,844],{"class":88},"-eq",[71,846,847],{"class":117}," \"Running\"",[71,849,127],{"class":92},[71,851,852,855,857,859],{"class":73,"line":297},[71,853,854],{"class":84},"Start-Service",[71,856,102],{"class":88},[71,858,781],{"class":92},[71,860,861],{"class":117},"\"ssh-agent\"\n",[71,863,864,867,869,871],{"class":73,"line":332},[71,865,866],{"class":84},"Stop-Service",[71,868,102],{"class":88},[71,870,781],{"class":92},[71,872,861],{"class":117},[35,874,875],{"id":875},"环境变量",[62,877,879],{"className":64,"code":878,"language":66,"meta":67,"style":67},"# 查看\n$env:PATH\n[Environment]::GetEnvironmentVariable(\"PATH\", \"User\")\n\n# 临时设置\n$env:NODE_ENV = \"production\"\n\n# 永久设置（用户级）\n[Environment]::SetEnvironmentVariable(\"MY_VAR\", \"value\", \"User\")\n\n# 添加到 PATH\n$currentPath = [Environment]::GetEnvironmentVariable(\"PATH\", \"User\")\n[Environment]::SetEnvironmentVariable(\"PATH\", \"$currentPath;D:\\Tools\", \"User\")\n",[52,880,881,886,897,919,923,928,942,946,951,974,978,983,1005],{"__ignoreMap":67},[71,882,883],{"class":73,"line":74},[71,884,885],{"class":77},"# 查看\n",[71,887,888,891,894],{"class":73,"line":81},[71,889,890],{"class":92},"$",[71,892,893],{"class":84},"env:",[71,895,896],{"class":92},"PATH\n",[71,898,899,902,905,908,911,913,916],{"class":73,"line":130},[71,900,901],{"class":92},"[",[71,903,904],{"class":88},"Environment",[71,906,907],{"class":92},"]::GetEnvironmentVariable(",[71,909,910],{"class":117},"\"PATH\"",[71,912,121],{"class":88},[71,914,915],{"class":117}," \"User\"",[71,917,918],{"class":92},")\n",[71,920,921],{"class":73,"line":137},[71,922,134],{"emptyLinePlaceholder":133},[71,924,925],{"class":73,"line":143},[71,926,927],{"class":77},"# 临时设置\n",[71,929,930,932,934,937,939],{"class":73,"line":247},[71,931,890],{"class":92},[71,933,893],{"class":84},[71,935,936],{"class":92},"NODE_ENV ",[71,938,208],{"class":88},[71,940,941],{"class":117}," \"production\"\n",[71,943,944],{"class":73,"line":252},[71,945,134],{"emptyLinePlaceholder":133},[71,947,948],{"class":73,"line":258},[71,949,950],{"class":77},"# 永久设置（用户级）\n",[71,952,953,955,957,960,963,965,968,970,972],{"class":73,"line":286},[71,954,901],{"class":92},[71,956,904],{"class":88},[71,958,959],{"class":92},"]::SetEnvironmentVariable(",[71,961,962],{"class":117},"\"MY_VAR\"",[71,964,121],{"class":88},[71,966,967],{"class":117}," \"value\"",[71,969,121],{"class":88},[71,971,915],{"class":117},[71,973,918],{"class":92},[71,975,976],{"class":73,"line":291},[71,977,134],{"emptyLinePlaceholder":133},[71,979,980],{"class":73,"line":297},[71,981,982],{"class":77},"# 添加到 PATH\n",[71,984,985,988,990,993,995,997,999,1001,1003],{"class":73,"line":332},[71,986,987],{"class":92},"$currentPath ",[71,989,208],{"class":88},[71,991,992],{"class":92}," [",[71,994,904],{"class":88},[71,996,907],{"class":92},[71,998,910],{"class":117},[71,1000,121],{"class":88},[71,1002,915],{"class":117},[71,1004,918],{"class":92},[71,1006,1007,1009,1011,1013,1015,1017,1020,1023,1026,1028,1030],{"class":73,"line":337},[71,1008,901],{"class":92},[71,1010,904],{"class":88},[71,1012,959],{"class":92},[71,1014,910],{"class":117},[71,1016,121],{"class":88},[71,1018,1019],{"class":117}," \"",[71,1021,1022],{"class":92},"$currentPath",[71,1024,1025],{"class":117},";D:\\Tools\"",[71,1027,121],{"class":88},[71,1029,915],{"class":117},[71,1031,918],{"class":92},[35,1033,1034],{"id":1034},"实用函数",[22,1036,1037,1038,1040],{},"添加到 ",[52,1039,54],{},"：",[62,1042,1044],{"className":64,"code":1043,"language":66,"meta":67,"style":67},"# 快速创建并进入目录\nfunction mkcd { param($dir) New-Item -ItemType Directory -Path $dir -Force; Set-Location $dir }\n\n# 查看端口占用\nfunction port { param($p) Get-NetTCPConnection -LocalPort $p -ErrorAction SilentlyContinue | Select-Object LocalPort, OwningProcess, @{N='Process';E={(Get-Process -Id $_.OwningProcess).ProcessName}} }\n\n# 快速 Base64 编解码\nfunction b64e { param($s) [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($s)) }\nfunction b64d { param($s) [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($s)) }\n\n# 计算文件哈希\nfunction hash { param($file) Get-FileHash $file -Algorithm SHA256 | Select-Object Hash }\n",[52,1045,1046,1051,1092,1096,1101,1169,1173,1178,1204,1227,1231,1236],{"__ignoreMap":67},[71,1047,1048],{"class":73,"line":74},[71,1049,1050],{"class":77},"# 快速创建并进入目录\n",[71,1052,1053,1056,1060,1062,1065,1068,1071,1073,1076,1078,1081,1083,1086,1089],{"class":73,"line":81},[71,1054,1055],{"class":88},"function",[71,1057,1059],{"class":1058},"sScJk"," mkcd",[71,1061,158],{"class":92},[71,1063,1064],{"class":88},"param",[71,1066,1067],{"class":92},"($dir) ",[71,1069,1070],{"class":84},"New-Item",[71,1072,102],{"class":88},[71,1074,1075],{"class":92},"ItemType Directory ",[71,1077,186],{"class":88},[71,1079,1080],{"class":92},"Path $dir ",[71,1082,186],{"class":88},[71,1084,1085],{"class":92},"Force; ",[71,1087,1088],{"class":84},"Set-Location",[71,1090,1091],{"class":92}," $dir }\n",[71,1093,1094],{"class":73,"line":130},[71,1095,134],{"emptyLinePlaceholder":133},[71,1097,1098],{"class":73,"line":137},[71,1099,1100],{"class":77},"# 查看端口占用\n",[71,1102,1103,1105,1108,1110,1112,1115,1117,1119,1122,1124,1127,1129,1131,1134,1136,1139,1141,1143,1145,1147,1150,1152,1154,1157,1159,1161,1164,1166],{"class":73,"line":143},[71,1104,1055],{"class":88},[71,1106,1107],{"class":1058}," port",[71,1109,158],{"class":92},[71,1111,1064],{"class":88},[71,1113,1114],{"class":92},"($p) ",[71,1116,726],{"class":84},[71,1118,102],{"class":88},[71,1120,1121],{"class":92},"LocalPort $p ",[71,1123,186],{"class":88},[71,1125,1126],{"class":92},"ErrorAction SilentlyContinue ",[71,1128,96],{"class":88},[71,1130,194],{"class":84},[71,1132,1133],{"class":92}," LocalPort",[71,1135,121],{"class":88},[71,1137,1138],{"class":92}," OwningProcess",[71,1140,121],{"class":88},[71,1142,202],{"class":88},[71,1144,205],{"class":92},[71,1146,208],{"class":88},[71,1148,1149],{"class":117},"'Process'",[71,1151,214],{"class":92},[71,1153,208],{"class":88},[71,1155,1156],{"class":92},"{(",[71,1158,746],{"class":84},[71,1160,102],{"class":88},[71,1162,1163],{"class":92},"Id ",[71,1165,108],{"class":84},[71,1167,1168],{"class":92},".OwningProcess).ProcessName}} }\n",[71,1170,1171],{"class":73,"line":247},[71,1172,134],{"emptyLinePlaceholder":133},[71,1174,1175],{"class":73,"line":252},[71,1176,1177],{"class":77},"# 快速 Base64 编解码\n",[71,1179,1180,1182,1185,1187,1189,1192,1195,1198,1201],{"class":73,"line":258},[71,1181,1055],{"class":88},[71,1183,1184],{"class":1058}," b64e",[71,1186,158],{"class":92},[71,1188,1064],{"class":88},[71,1190,1191],{"class":92},"($s) [",[71,1193,1194],{"class":88},"Convert",[71,1196,1197],{"class":92},"]::ToBase64String([",[71,1199,1200],{"class":88},"Text.Encoding",[71,1202,1203],{"class":92},"]::UTF8.GetBytes($s)) }\n",[71,1205,1206,1208,1211,1213,1215,1217,1219,1222,1224],{"class":73,"line":286},[71,1207,1055],{"class":88},[71,1209,1210],{"class":1058}," b64d",[71,1212,158],{"class":92},[71,1214,1064],{"class":88},[71,1216,1191],{"class":92},[71,1218,1200],{"class":88},[71,1220,1221],{"class":92},"]::UTF8.GetString([",[71,1223,1194],{"class":88},[71,1225,1226],{"class":92},"]::FromBase64String($s)) }\n",[71,1228,1229],{"class":73,"line":291},[71,1230,134],{"emptyLinePlaceholder":133},[71,1232,1233],{"class":73,"line":297},[71,1234,1235],{"class":77},"# 计算文件哈希\n",[71,1237,1238,1240,1243,1245,1247,1250,1253,1256,1258,1261,1263,1265],{"class":73,"line":332},[71,1239,1055],{"class":88},[71,1241,1242],{"class":1058}," hash",[71,1244,158],{"class":92},[71,1246,1064],{"class":88},[71,1248,1249],{"class":92},"($file) ",[71,1251,1252],{"class":84},"Get-FileHash",[71,1254,1255],{"class":92}," $file ",[71,1257,186],{"class":88},[71,1259,1260],{"class":92},"Algorithm SHA256 ",[71,1262,96],{"class":88},[71,1264,194],{"class":84},[71,1266,1267],{"class":92}," Hash }\n",[35,1269,1270],{"id":1270},"脚本执行策略",[62,1272,1274],{"className":64,"code":1273,"language":66,"meta":67,"style":67},"# 查看当前策略\nGet-ExecutionPolicy\n\n# 允许运行本地脚本\nSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser\n\n# 临时绕过\npowershell -ExecutionPolicy Bypass -File script.ps1\n",[52,1275,1276,1281,1286,1290,1295,1310,1314,1319],{"__ignoreMap":67},[71,1277,1278],{"class":73,"line":74},[71,1279,1280],{"class":77},"# 查看当前策略\n",[71,1282,1283],{"class":73,"line":81},[71,1284,1285],{"class":84},"Get-ExecutionPolicy\n",[71,1287,1288],{"class":73,"line":130},[71,1289,134],{"emptyLinePlaceholder":133},[71,1291,1292],{"class":73,"line":137},[71,1293,1294],{"class":77},"# 允许运行本地脚本\n",[71,1296,1297,1300,1302,1305,1307],{"class":73,"line":143},[71,1298,1299],{"class":84},"Set-ExecutionPolicy",[71,1301,102],{"class":88},[71,1303,1304],{"class":92},"ExecutionPolicy RemoteSigned ",[71,1306,186],{"class":88},[71,1308,1309],{"class":92},"Scope CurrentUser\n",[71,1311,1312],{"class":73,"line":247},[71,1313,134],{"emptyLinePlaceholder":133},[71,1315,1316],{"class":73,"line":252},[71,1317,1318],{"class":77},"# 临时绕过\n",[71,1320,1321,1324,1326,1329,1331],{"class":73,"line":258},[71,1322,1323],{"class":92},"powershell ",[71,1325,186],{"class":88},[71,1327,1328],{"class":92},"ExecutionPolicy Bypass ",[71,1330,186],{"class":88},[71,1332,1333],{"class":92},"File script.ps1\n",[35,1335,1336],{"id":1336},"参考链接",[35,1338,1339],{"id":1339},"常见使用场景",[1341,1342,1343],"h3",{"id":1343},"开发机维护",[1345,1346,1347,1350,1353,1356],"ul",{},[42,1348,1349],{},"搜日志",[42,1351,1352],{},"查端口",[42,1354,1355],{},"改环境变量",[42,1357,1358],{},"批量整理文件",[1341,1360,1361],{"id":1361},"系统排障",[1345,1363,1364,1367,1370],{},[42,1365,1366],{},"查服务状态",[42,1368,1369],{},"查进程占用",[42,1371,1372],{},"查 DNS \u002F 网络连通",[1341,1374,1375],{"id":1375},"自动化脚本",[1345,1377,1378,1381,1384],{},[42,1379,1380],{},"定时任务",[42,1382,1383],{},"文件清理",[42,1385,1386],{},"配置初始化",[35,1388,1389],{"id":1389},"常见问题",[1341,1391,1392],{"id":1392},"脚本运行被拦住",[22,1394,1395],{},"大多数时候是执行策略问题，不一定是脚本本身有错。",[1341,1397,1399],{"id":1398},"命令明明有输出但后面接不上","命令明明有输出，但后面接不上",[22,1401,1402,1403,1406],{},"PowerShell 管道传的是对象，不总是纯文本。遇到这种情况先看对象属性，再决定怎么 ",[52,1404,1405],{},"Select-Object"," 或格式化。",[1341,1408,1410],{"id":1409},"为什么复制来的-linux-命令不好使","为什么复制来的 Linux 命令不好使",[22,1412,1413],{},"因为 PowerShell 和 Bash 的语法、转义、管道模型本来就不一样。与其硬套，不如优先用原生写法。",[1345,1415,1416,1425,1433,1441],{},[42,1417,1418,1424],{},[26,1419,1423],{"href":1420,"rel":1421},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fpowershell\u002F",[1422],"nofollow","PowerShell 文档"," — 微软官方",[42,1426,1427,1432],{},[26,1428,1431],{"href":1429,"rel":1430},"https:\u002F\u002Fgithub.com\u002FPowerShell\u002FPowerShell",[1422],"PowerShell GitHub"," — 源码",[42,1434,1435,1440],{},[26,1436,1439],{"href":1437,"rel":1438},"https:\u002F\u002Fgithub.com\u002FPowerShell\u002FPSReadLine",[1422],"PSReadLine"," — 命令行增强",[42,1442,1443,1447],{},[26,1444,1446],{"href":1445},"\u002Fdocs\u002Fenv-variables","环境变量管理"," — 如果你正在处理 PATH、配置注入和变量分层",[1449,1450,1451],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":67,"searchDepth":81,"depth":81,"links":1453},[1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1468],{"id":37,"depth":81,"text":37},{"id":60,"depth":81,"text":60},{"id":367,"depth":81,"text":367},{"id":521,"depth":81,"text":521},{"id":711,"depth":81,"text":711},{"id":875,"depth":81,"text":875},{"id":1034,"depth":81,"text":1034},{"id":1270,"depth":81,"text":1270},{"id":1336,"depth":81,"text":1336},{"id":1339,"depth":81,"text":1339,"children":1464},[1465,1466,1467],{"id":1343,"depth":130,"text":1343},{"id":1361,"depth":130,"text":1361},{"id":1375,"depth":130,"text":1375},{"id":1389,"depth":81,"text":1389,"children":1469},[1470,1471,1472],{"id":1392,"depth":130,"text":1392},{"id":1398,"depth":130,"text":1399},{"id":1409,"depth":130,"text":1410},{"path":1474,"title":1475,"description":1476,"docType":8,"resourceKind":9,"categoryId":1477,"categoryLabel":1478,"updatedAt":12,"publishedAt":12,"icon":1479},"\u002Fdocs\u002Fnpm-scripts","npm scripts 与工具链","package.json scripts 配置、常用构建工具、Monorepo 管理与发包流程","programming-languages","编程语言","i-carbon-application",{"path":1481,"title":1482,"description":1483,"docType":8,"resourceKind":9,"categoryId":1477,"categoryLabel":1478,"updatedAt":12,"publishedAt":12,"icon":1479},"\u002Fdocs\u002Fpython-basics","Python 开发环境","Python 安装、虚拟环境、包管理、常用库与代码片段",[1485,1486,1487],"希望把零散经验整理成长期可复用工作流的人","正在搭建开发环境、统一工具链或排查构建问题的开发者","希望阅读时顺手建立自己的操作清单或收藏体系的人",[1489,1490,1491],"先浏览标题、摘要和目录，带着问题阅读会更高效","确认本机 Node、包管理器、终端和仓库依赖版本是否一致","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[1493,1498,1503,1508],{"path":1494,"title":1495,"description":1496,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1497,"publishedAt":1497,"icon":13},"\u002Fdocs\u002Flocal-setup","本地运行与部署","使用 bun 安装、开发、构建与预览 DomiVault 的完整本地流程与排障指引","2026-03-10",{"path":1499,"title":1500,"description":1501,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1502,"publishedAt":1502,"icon":13},"\u002Fdocs\u002Fvolta-guide","Volta Node 版本管理","使用 Volta 管理 Node.js、npm、pnpm 和 Yarn，并在项目中固定 JavaScript 工具链版本","2026-03-08",{"path":1504,"title":1505,"description":1506,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":1507,"publishedAt":1507,"icon":13},"\u002Fdocs\u002Fpnpm-monorepo","pnpm 与 Monorepo","pnpm 使用技巧、workspace 配置、Monorepo 项目管理与 Turborepo","2026-02-28",{"path":1445,"title":1446,"description":1509,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"dotenv 配置、各平台环境变量设置、.env 文件规范与安全实践",1776215713930]