PowerShell PSScriptRoot为null

时间:2017-06-10 13:52:23

标签: powershell powershell-v4.0

当我运行SPI_SETDESKWALLPAPER=20 ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,0,'imgpath', 3) 时,它会返回$PSScriptRoot。我正在使用PS版本4。

null

错误

  

Join-Path:无法将参数绑定到参数'Path',因为它是一个   空字符串。

2 个答案:

答案 0 :(得分:7)

如果使用ISE,请使用:

$psISE.CurrentFile.FullPath

启动ISE时,将创建$ psISE并将其用于确定ISE实例的当前路径。这是在3.0版中引入的。

请参见ISE Object Model Hierarchy

如果要在Shell或ISE中获取路径,则可以使用类似以下内容的方法:

if ($psISE)
{
    Split-Path -Path $psISE.CurrentFile.FullPath        
}
else
{
    $global:PSScriptRoot
}

答案 1 :(得分:5)

您必须确保此表达式位于已保存的.ps1脚本中。

以下情况可能会发生这种情况:

  • 您在PowerShell ISE控制台中使用此语句
  • 您在没有脚本文件的PowerShell控制台中使用此语句
  • 您只标记此表达式以便在PowerShell ISE中执行