You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Invoke-Command传递PowerShell变量异常导致远程修改页面文件大小失败

Invoke-Command传递PowerShell变量异常导致远程修改页面文件大小失败

看起来你的问题核心是远程执行时$SetPF变量为null,所以后续设置InitialSize和MaximumSize才会报“找不到属性”以及“空值表达式无法调用方法”的错误。具体原因和修复方案如下:

问题根源分析

  1. 匹配逻辑错误:你用where{$_.caption -like $Using:GetDrive}来过滤页面文件,但Win32_PageFileSetting的Caption属性值是完整的路径(比如P:\pagefile.sys),而$GetDrive只是单个盘符(比如P),直接用-like没有通配符的话完全匹配不上,导致$SetPF返回空值。
  2. 变量传递的冗余:其实你已经构造了完整的页面文件路径$PagePath,直接用它来过滤会更准确,没必要再用盘符去模糊匹配。

修复后的完整脚本

#Get Page File Size and Path
$MinSize= Read-Host "Enter minimum size in MB"
$MaxSize = Read-Host "Enter maximum size in MB"
$GetDrive = Read-Host "What drive do you want the Page File to exist"
$PagePath = $GetDrive + ":\pagefile.sys"

#Do the work
Invoke-Command -ComputerName $PFServer -ScriptBlock{
    # 禁用自动管理页面文件
    $ComputerSystem = Get-WmiObject -ClassName Win32_ComputerSystem
    $ComputerSystem.AutomaticManagedPagefile = $false
    $ComputerSystem.Put()

    # 删除现有页面文件
    $pf = Get-WmiObject -ClassName Win32_PageFileSetting
    if ($pf) { $pf.Delete() }

    # 创建新的页面文件(初始设为0,后续修改)
    Set-WmiInstance -Class Win32_PageFileSetting -Arguments @{
        name = $using:PagePath
        InitialSize = 0
        MaximumSize = 0
    } -EnableAllPrivileges

    # 精准获取刚创建的页面文件对象
    $SetPF = Get-WmiObject -ClassName Win32_PageFileSetting | Where-Object { $_.Name -eq $Using:PagePath }

    # 检查对象是否存在,再修改属性
    if ($SetPF) {
        $SetPF.InitialSize = $Using:MinSize
        $SetPF.MaximumSize = $Using:MaxSize
        $SetPF.Put()
        Write-Host "页面文件设置已成功更新"
    } else {
        Write-Error "未能找到目标页面文件 $($Using:PagePath)"
    }
}

关键改进点

  • 精准过滤对象:用$_.Name -eq $Using:PagePath代替模糊匹配,确保能准确获取到刚创建的页面文件对象。
  • 增加空值检查:在删除现有页面文件和修改属性前都加了判断,避免因为空值导致报错。
  • 补全完整流程:把本地脚本里的“禁用自动管理页面文件”和“删除现有页面文件”步骤也整合到远程脚本块里,确保流程完整(之前的远程脚本漏了这两步,可能导致设置不生效)。

额外建议

  • 推荐使用CIM cmdlet代替WMI cmdlet(比如Get-CimInstance、Set-CimInstance),因为WMI cmdlet已经被标记为过时,CIM在远程执行上更稳定且功能更丰富。
  • 修改页面文件设置后,通常需要重启服务器才能生效,你可以在脚本末尾添加Restart-Computer -Force(记得提前通知相关人员)。
  • 确保执行脚本的账号拥有远程服务器的管理员权限,否则WMI操作会失败。

备注:内容来源于stack exchange,提问作者Dale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:03:03