2012-08-16 2 views
0

У меня есть сценарий powershell, который предназначен для изменения политики домена ipsec, добавив IP-адрес в указанный список фильтров. Проблема заключается в том, что при запуске netsh store location=domain domain=our.domain.com в моем скрипте powershell он не запоминает расположение хранилища для следующих команд. Я пробовал обходной путь, создав текстовый файл, который затем запускается из powershell как netsh -f "path\to\textfile.txt", но он, похоже, не работает. Ниже вы найдете соответствующий блок сценария. Домен настроен правильно, поскольку он работает при запуске непосредственно в netsh.Использование netsh в powershell: сохранить расположение хранилища для нескольких команд

$command = "ipsec static 
    set store location=domain domain=our.domain.com 
    add filter filterlist=$FILTERLIST 
     protocol=ANY srcaddr=$ip 
     srcmask=255.255.255.255 
     dstaddr=ME 
     description='IP address blocked' 
     mirrored=YES" 
    $($command.Trim()) | out-file $($DIR+"\netsh\temp.txt") 
    netsh -f $($DIR+"\netsh\temp.txt") 
    remove-item $($DIR+"\netsh\temp.txt") 

я не получил его на работу еще, но, как я собираюсь сделать это, было бы неплохо знать, если есть другие лучше спроектированные решения для этого. Im running PowerShell v.1.0

+0

Хорошо, я придумал хороший способ выполнить задачу. Благодаря мощной конвейерной обработке PowerShell вам нужно будет '$ command | netsh', где '$ command' является действительной командой netsh (сценарий выше содержит ошибки) - и thats it :) – scutze

+0

Кстати, вы, вероятно, не используете powershell v1 - каталог установки всегда v1.0 (длинный рассказ). Дата баннера запуска должна сообщить вам: 2006 = v1, 2009 = v2, 2012 = v3 – x0n

ответ

0

Используйте строку здесь @" ... "@, каждая строка вашего скрипта находится на разных линиях между ними. и подайте команду на netsh

@" 
winhttp show proxy 
winhttp show proxy 
"@ | netsh