�
���h�� � �� � d dl Z e j e j d�� d dlZd dlZd dlZd dlZd dlmZ d dl m
Z
mZ d dlZd dl
Z
d dlmZ d dlmZmZmZmZmZ d dlmZ d d lmZ e
d
ddd
gddddd��� Zej0 j3 ej0 j5 ej0 j5 e� � d� Zdedefd�Zdedefd�Z ejC � dJdedee" dee defd�� Z#ejC � dKdeee dee" defd�� Z$ejC � dLdee dee dee" defd�� Z%ejC � dMdee dee" dee dee" def
d �� Z&ejC � dNd!ed"ee" d#ee" dee" def
d$�� Z'ejC � dKd%ed&eeef d'ee dee" def
d(�� Z(ejC � dOd)ed*ed&eeeeef d+ed,ed'ee dee" defd-�� Z)d.edefd/�Z*ejC � d.edefd0�� Z+ dKd)ed1ed'ee dee" def
d2�Z,ejC � dKd)ed3ed'ee dee" def
d4�� Z-ejC � dKd)ed1ed3ed5ee dee" deeef fd6�� Z.ejC � dKd)ed7ed'ee dee" def
d8�� Z/ejC � dKd)ed9ed'ee dee" def
d:�� Z0ejC � dKd)ed7ed9ed5ee dee" deeef fd;�� Z1dJdedee" dee defd<�Z2ejC � dJdedee" dee defd=�� Z3d>� Z4ejk d?� d%edefd@�� Z6ejk dA� defdB�� Z7ejk dC� defdD�� Z8ejs � dEedefdF�� Z:ejs � dPdGedHedefdI�� Z;y)Q� Nz'%(asctime)s [%(levelname)s] %(message)s)�level�format)�Optional)�FastMCP�Context)�datetime)�Dict�Any�Listr �Union)�asynccontextmanager)�
AsyncIteratorzPowerShell Integration Serverz�Secure PowerShell command execution and script generation for Windows system administration, including Intune and BigFix deployment scripts�asyncioz
psutil>=5.9.0T)�tools� resources�resourceTemplates�prompts)�description�dependencies�capabilities� templates�code�returnc �j � | j � j � j d� s| � d�} | S )z6Add JSON formatting to PowerShell code if not present.z| convertto-jsonz | ConvertTo-Json)�strip�lower�endswith)r s �/C:\MCP\PowerShell-Exec-MCP-Server\src\server.py�format_json_outputr ( s2 � ��:�:�<����(�(�);�<���(�)���K� c �6 � � g d�}t � fd�|D � � S )z�
Validate PowerShell code for potentially harmful commands.
Args:
code: The PowerShell code to validate
Returns:
bool: True if code passes validation
)zrm\s+(-r|-f|/s)*\s*/zformat\s+[a-z]:z
Stop-ComputerzRestart-ComputerzRemove-Item.*-RecursezInvoke-Expression�iexz
Start-ProcesszNew-ServicezSet-Servicez
net\s+userc 3 �h �K � | ]) }t j |�t j � �� �+ y �w)N)�re�search�
IGNORECASE)�.0�patternr s �r � <genexpr>z+validate_powershell_code.<locals>.<genexpr>F s% �� �� �]�J\�w�2�9�9�W�d�B�M�M�:�J\�s �/2)�any)r �dangerous_patternss ` r �validate_powershell_coder, . s"