powershell脚本如何改成一句命令?
powershell吧
全部回复
仅看楼主
level 1
蓝梦妖蝶 楼主
两个问题,
第一个,一个复杂的脚本如何改成一句命令发出?每句话用分号隔开还好说。像比较复杂的。如如下代码怎么改?
第二次,如下代码本意是把“未命名 - Notepad”的窗口隐藏或显示出来。存成xx.ps1脚本后,运行毫无反应是怎么回事。
$definition = @"
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public static void Show(string wClass, string wName)
{
IntPtr hwnd = FindWindow(wClass, wName);
if ((int)hwnd > 0)
ShowWindow(hwnd, 1);
}
public static void Hide(string wClass, string wName)
{
IntPtr hwnd = FindWindow(wClass, wName);
if ((int)hwnd > 0)
ShowWindow(hwnd, 0);
}
"@
add-type -MemberDefinition $definition -Namespace my -Name WinApi
[my.WinApi]::Show('Notepad', '未命名 - Notepad')
2023年11月07日 08点11分 1
level 1
蓝梦妖蝶 楼主
改成了一句话了。但是返回值还是false
$code = '[DllImport("user32.dll")]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';add-type -MemberDefinition $code -Namespace my -Name WinApi;[my.WinApi]::ShowWindow([my.WinApi]::FindWindow('Notepad', '未命名 - Notepad'), 2)
2023年11月07日 08点11分 2
level 1
蓝梦妖蝶 楼主
如果把这一句命令用脚本xxx.ps1文件运行。就可以执行。
如果用powershell -c 加代码的方式运行。就会报错。
powershell -c $code = '[DllImport("user32.dll")]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);';add-type -MemberDefinition $code -Namespace my -Name WinApi;[my.WinApi]::ShowWindow([my.WinApi]::FindWindow('Notepad', '未命名 - Notepad'), 2)
所在位置 行:1 字符: 117
+ ... ndWindow(string lpClassName, string lpWindowName);[DllImport(user32.d ...
+ ~
表达式中缺少右“)”。
2023年11月07日 08点11分 3
1