我有一个Powershell脚本,其中包含:
$Path = 'c:\windows\system32\notepad.exe'
$Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($Path)
$Icon.ToBitmap().Save('C:\icon.png')
我在' PwerShell ISE '中编写这些脚本,当我运行时,它工作正常,而不是问题显示。
但,右键点击“ icon.ps1 ”然后“使用PowerShell运行” '它会收到这个错误:
PS D:\My PowerShell\tmp> .\icon.ps1
Unable to find type [System.Drawing.Icon].
At D:\My PowerShell\tmp\icon.ps1:2 char:9
+ $Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($Path)
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Drawing.Icon:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
You cannot call a method on a null-valued expression.
At D:\My PowerShell\tmp\icon.ps1:4 char:1
+ $Icon.ToBitmap().Save('C:\icon.png')
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
答案 0 :(得分:0)
在运行脚本的其余部分之前,您需要加载 System.Drawing 程序集。在脚本的开头,放置这一行:
Add-Type -AssemblyName System.Drawing
这将首先加载程序集,允许脚本的其余部分访问该程序集的方法和成员。