分享一些自己工作上写过 Windows 脚本,希望可以帮助到有同样需求的小伙伴
# WIFI 黑白名单
由于 Ivanti EPM
只支持禁用无线网卡的功能,无法对无线 SSID名称
做为管控对象,所以之前针对有这方面需求的用户写了个 WIFI 黑白名单的脚本
# WIFI 白名单
要想使用 WIFI 白名单,首先需要先禁止所有的 SSID,然后添加允许的 SSID,这样客户端就只能访问允许列表中的 SSID
l | @echo off |
| |
| |
| |
| netsh wlan add filter permission=denyall networktype=infrastructure |
| |
| |
| |
| netsh wlan add filter permission=allow ssid="SSID名称" networktype=infrastructure |
# WIFI 黑名单
仅拒绝访问阻止列表的 SSID
l | @echo off |
| |
| |
| |
| netsh wlan add filter permission=block ssid="SSID名称" networktype=infrastructure |
# 辅助命令
l | netsh wlan delete filter permission=allow ssid="SSID名称" networktype=infrastructure |
l | netsh wlan delete filter permission=block ssid="SSID名称" networktype=infrastructure |
# 禁用电脑摄像头
有一些企业内部管控比较严厉,希望可以通过 Ivanti EPM
禁止用户打开电脑的摄像头,该企业使用了 AD 域限制了用户的管理员权限,所以我这边就简单粗暴,直接在设备管理器中禁用掉摄像头
# 禁用摄像头
l | Disable-PnpDevice -InstanceId (Get-PnpDevice -FriendlyName *cam* -Class Camera -Status OK).InstanceID -Confirm:$false |
# 启用摄像头
l | Enable-PnpDevice -InstanceId (Get-PnpDevice -FriendlyName *cam* -Class Camera -Status Error).InstanceID -Confirm:$false |
# 文件查找
有的用户希望能够通过 EPM 查询客户端是否存在某个软件和文件,由于 EPM 只能收集客户端安装过的软件和运行过的软件信息,对非可执行程序或者未在电脑上运行过的程序是无法搜集的,于是写了个查找文件的脚本,通过遍历所有的磁盘,然后将结果保存到用户指定的共享文件中
l | |
| $DiskList = Get-Volume | where { ($_.DriveType -like 'Fixed') -and ($_.FileSystemLabel -notlike 'System Reserved')} | select -expand DriveLetter |
| |
| |
| $FileName = ${env:username}+"_"+${env:COMPUTERNAME}+"_" |
| |
| |
| $UNCPath = '\\127.0.0.1\auditreport$' |
| |
| |
| net use $UNCPath password /user:administrator |
| |
| |
| if ( ${env:COMPUTERNAME} -ne "FORTRESS"){ |
| |
| Foreach($disk in $DiskList) |
| { |
| |
| $ExstsFile = Get-ChildItem -Path $Disk':\' -Recurse -Name photoshop.exe |
| |
| |
| if ($ExstsFile){ |
| echo $ExstsFile >> $UNCPath\$FileName$disk.txt |
| } |
| |
| } |
| |
| } |
| exit |
# 删除本地组中无效的 AD 用户
AD 环境中的本地组存在大量无效的 AD 用户,这些用户通常以 S-1
开头,有些强迫症用户就希望可以删除掉这些无效用户,于是就写了个删除无效 AD 用户的脚本
l | |
| |
| $GroupName = @( |
| |
| ([ADSI]"WinNT://./test").psbase.Invoke('Members') | |
| % { |
| $_.GetType().InvokeMember('AdsPath','GetProperty',$null,$($_),$null) |
| } |
| ) -match '^WinNT'; |
| |
| $GroupName = $GroupName -replace "WinNT://","" |
| |
| foreach ($member in $GroupName) |
| { |
| |
| if ($member -like "$env:COMPUTERNAME/*" -or $member -like "Domain/*" -or $menber -like "BUILTIN/*") |
| { |
| continue; |
| } |
| elseif ($member -match "S-1") |
| { |
| write-host $member |
| Remove-LocalGroupMember -group "${GroupName}" -member $member |
| } |
| write-host $member "check this users permissions if set in endpoint manager" |
| } |
# 设置客户端壁纸
有的用户希望在没有 AD 域的情况统一客户端的壁纸,刚开始以为很简单,就写了个脚本通过注册表指定壁纸路径使其生效,后面发现切换到其它用户登录该壁纸不生效,于是就简单粗暴的添加了开机启动项实现其它用户登录也生效
l | @echo off |
| |
| |
| net use \\ivt-svr\soft password /user:ShareName |
| |
| |
| mkdir c:\wallpaper |
| attrib +s +h +r c:\wallpaper |
| |
| |
| xcopy /y \\ivt-svr\soft\zard.jpg c:\wallpaper\ |
| |
| |
| echo Y|net use \\ivt-svr\soft /del |
| |
| |
| reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v Wallpaper /t reg_sz /d c:\WallPaper\wp.bat /f |
| |
| |
| echo ^@echo off >> c:\WallPaper\wp.bat |
| echo reg add ^"hkcu^\control panel^\desktop^" ^/v wallpaper ^/d ^"c:^\wallpaper^\zard.jpg^" ^/f >> c:\WallPaper\wp.bat |
| echo RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters >> c:\WallPaper\wp.bat |
| |
| |
| xcopy /y c:\WallPaper\wp.bat "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp" |
| attrib +s +h +r c:\WallPaper\wp.bat |
| attrib +s +h +r "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\wp.bat" |
| |
| |
| cmd /c c:\WallPaper\wp.bat |
# 创建程序快捷方式,并替换图标
之前有用户想要用 ivanti
的软件门户,但是当初在配置代理的时候并没有配置将软件门户显示在用户桌面,现在想通过 EPM
后台推送一个任务创建快捷方式,并且将软件门户的图标替换成自己的公司 logo
, 然后我就根据用户的需求写了个 powershell
的脚本
l | |
| |
| |
| |
| |
| $URL = "http://epm2022/software/Store.ico" |
| |
| $OouFile = "c:\windows\Store.ico" |
| |
| Invoke-WebRequest -Uri $URL -OutFile $OouFile |
| |
| |
| |
| |
| $shortcutPath = "C:\Users\Public\Desktop\软件商城.lnk" |
| |
| $iconPath = "C:\windows\Store.ico" |
| |
| $iconIndex = 0 |
| |
| |
| |
| |
| $shell = New-Object -ComObject WScript.Shell |
| |
| $shortcut = $shell.CreateShortcut($shortcutPath) |
| |
| $shortcut.IconLocation = "$iconPath,$iconIndex" |
| |
| $shortcut.TargetPath = "C:\Program Files (x86)\LANDesk\LDClient\LANDeskPortalManager.exe" |
| |
| $shortcut.Save() |
| |
| |
| |
| |
| [System.Runtime.Interopservices.Marshal]::ReleaseComObject($shortcut) | Out-Null |
| [System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null |
| Remove-Variable shortcut |
| Remove-Variable shell |
| |