幾個問題能問一下各位前輩
程式碼
bat
REM set pc=
set /p pc=請輸入電腦名稱:
powershell ./lcd.ps1 "pc"
.sp1
ETSN -COMPUTERNAME pc
$monitor = gwmi WmiMonitorID -Namespace root\wmi
($monitor.SerialNumberID | foreach {[char]$_}) -join ""
上網查是說 $pc = xxx
但是我直接執行
ETSN -COMPUTERNAME pc
$monitor = gwmi WmiMonitorID -Namespace root\wmi
($monitor.SerialNumberID | foreach {[char]$_}) -join ""
沒辦法成功執行顯示出我想要的東西
p.s
我希望的東西是
輸入電腦名稱
會顯示該電腦使用之螢幕序號
我用 cmd 去執行 是可以成功的
ETSN -COMPUTERNAME pc01
$monitor = gwmi WmiMonitorID -Namespace root\wmi
($monitor.SerialNumberID | foreach {[char]$_}) -join ""
輸出內容
SNxxxxxxxxxx
感謝大家
都已使用Powershell 應沒必要再從DOS 傳參數進去
$name = Read-Host '請輸入電腦名稱:'
那能問一下要怎麼回到輸入電腦名稱?
可以參考這個喔
能詢問一下
為什麼
$name = Read-Host '請輸入電腦名稱:'
ETSN -COMPUTERNAME $name
$monitor = gwmi WmiMonitorID -Namespace root\wmi
($monitor.SerialNumberID | foreach {[char]$_}) -join ""
用Powershell 直接執行,但是卻不會抓到對方螢幕的序號,而是本機螢幕的序號??
我要如何讓
ETSN -COMPUTERNAME $name
這行先執行進入以後
在執行下面兩行
$monitor = gwmi WmiMonitorID -Namespace root\wmi
($monitor.SerialNumberID | foreach {[char]$_}) -join ""
這個要啟用WinRM 才可連線至遠端電腦進行管理,如何啟用請參考WinRM
這個簡單些
PowerShell
參考邦友案例自己造批次檔輪子,僅限查詢本機序號
@Echo Off
SetLocal ENABLEDELAYEDEXPANSION
Set "Ascii= 0000000000000000000000000000000 ^!^"#$%%^&'()*+,-./0123456789:;^<=^>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^^^_`abcdefghijklmnopqrstuvwxyz{^|}~"
For /f "delims=,{} tokens=1-16 Skip=1 eol= " %%a In ('WMIC /NameSpace:\\Root\WMI Path WmiMonitorID Get SerialNumberID ^|findstr .') Do (
Echo 螢幕序號: !Ascii:~%%a,1!!Ascii:~%%b,1!!Ascii:~%%c,1!!Ascii:~%%d,1!!Ascii:~%%e,1!!Ascii:~%%f,1!!Ascii:~%%g,1!!Ascii:~%%h,1!!Ascii:~%%i,1!!Ascii:~%%j,1!!Ascii:~%%k,1!!Ascii:~%%l,1!!Ascii:~%%m,1!!Ascii:~%%n,1!!Ascii:~%%o,1!
)
Pause
能在詢問一下我這樣寫法有什麼問題嗎??
@ECHO OFF
REM set v_computer=168.1.1.1
:rd1
set /p v_computer=請輸入電腦名稱:
set main_cmd=powershell Invoke-Command -ComputerName
set cmd1=$gwmi WmiMonitorID -Namespace root\wmi
set cmd2=($monitor.SerialNumberID | foreach {[char]$_}) -join ""
%main_cmd% %v_computer% {%cmd1%}
%main_cmd% %v_computer% {%cmd2%}
goto rd1
pause
為什麼我執行不出來???
單獨用cmd 去執行是可以執行
porewshell
SP >> ETSN -COMPUTERNAME $name
$name >>$gwmi WmiMonitorID -Namespace root\wmi
$name >>($monitor.SerialNumberID | foreach {[char]$_}) -join ""
就能夠顯示
$name 螢幕序號
但是我用.bat則是卡在foreach
有人能幫忙解一下嗎??