Adding a timeout to a script

Hello

I am new to scripting and I'm working to be able to deploy a large number of virtual machines to a .csv file and then customize their network settings once deployed.  I know that there are probably scripts already on the Internet that will accomplish that, but I'm learning, so I would build the script from scratch, so I complete understand it.  Here's what I have so far:

SE connect-VIServer-Server MYVCSERVER. MYDOMAIN.local - Mydomain\username of the username-password MYPASSWORD

New-vm - vmhost prodh1. MYDOMAIN.local - name of TEST - SVR02 - W2K8R2SP1 - IOMEGA data store model - OSCustomizationspec-W2K8R2SP1-_Tobedeleted location | Start-VM

Get - vm "TEST-SVR02 | Get-VMGuestNetworkInterface Guestuser - administrator - GuestPassword "MYPASSWORD" |? {$_.name - eq "Connect to network Local 3"} | Director of game-vmguestnetworkinterface - Guestuser - GuestPassword "MYPASSWORD" - IPPolicy - 192.168.1.25 static IP - Netmask 255.255.255.0 - Gateway 192.168.1.1 DNS - 192.168.1.2,192.168.1.3

Get-NetworkAdapter "TEST-SVR02 | Together-NetworkAdapter - NetworkName VM1-confirm: $false

Each line in the code works, however, the created virtual machine must be deployed, and then custom, only then the network settings are editable from the VMtools must run in order to customize the network settings.  The total time to do this is about 20 minutes.

Is there a simple way is:

1. have the script wait for customization of the OS finish before attempting to change the network settings

or

2. have the script wait about 20 minutes to allow personalization deployment complete

Thank you.

Take a look at the post of Vitali called waiting for the customization of the OS to complete

Tags: VMware

Similar Questions

  • define an id scsi for a disc newly added for virtual machines via script

    Hi Experts,

    I used the script below to add disks to several virtual machines
    http://blog.mattvogt.NET/2013/03/14/PowerCLI-mass-add-hard-disks/

    But currently our requirement for change as if we must add 3 2 GB drives, the disks must the controller use SCSI (1:0) - (1:2)

    And next bunch of disks, for example, should use use SCSI (2:0) - (2:2).

    Y at - it an option to set the SCSI ID when adding new disks.
    Please let me know if there is nothing we can achieve through scripts.

    Thanks in advance.

    Kind regards
    Sourav

    Try this new version, it works for me in my test environment

    ### Get VM/Disk Count/Datastore information ### $vmname = Read-Host "VM Name to add disks to"$num_disks = Read-Host "number of disks to add"$ds = "Oracle DB Farm Datastore Group"$format = Read-Host "Disk Format (thin, thick, EagerZeroedThick)"$size = Read-Host "Disk Size (GB)"
    
    $vm = Get-VM $vmname$datastore = Get-DatastoreCluster -Name $ds
    
    ### Add $num_disks to VM1..$num_disks | %{  Write-Host "Adding disk $_ size $size GB and format $format to $($vm.Name) on datastore $datastore"
    
      if($_ -eq 1){      $hd = New-HardDisk -vm $vm -CapacityGB $size -Datastore $datastore -StorageFormat $format      $hd = Get-HardDisk -VM $vm | Where {$_.ExtensionData.Backing.UUid -eq $hd.ExtensionData.Backing.Uuid}      $ctrl = New-ScsiController -Type Paravirtual -HardDisk $hd  }  else{      $hd = New-HardDisk -vm $vm -CapacityGB $size -Datastore $datastore -StorageFormat $format -Controller $ctrl    $hd = Get-HardDisk -VM $vm | Where {$_.ExtensionData.Backing.UUid -eq $hd.ExtensionData.Backing.Uuid}  }}
    
  • adding categories to list dropdown script

    Hello

    Can't find the easy answer.

    I have a drop down when one of the categories (Limbo) is selected, it erases any other data in the form.  What I want to do now is to add 1 Limbo, Limbo 2, Limbo3... etc. at the drop down and have these categories do the same thing as Limbo.

    Here's a partial script with the kind of Limbo.

    I do not know have added in limbo 1, Limbo2 to the script

    Any help would be great!

    In INITIALIZATION:

    if (this.rawValue == "Limbo")

    {

    for(var i=0; someArray.length; i i<++)

        {

            if (i == 3 || i == 7 || i == 13)

            {

    xfa.resolveNode (untableau [i]+"..") RawValue NAR") = 0;

                for (var j=1;j<8;j++)

                {

    xfa.resolveNode(someArray[i]__+__".rating"__+__j).rawValue = 0;

    xfa.resolveNode(someArray[i]__+__".rating"__+__j).access = 'protected ';

                }

            }else{}

                for (var j=1;j<9;j++)

                {  

                    if (j<8)

                    {

    xfa.resolveNode(someArray[i]__+__".rating"__+__j).rawValue = 0;

    xfa.resolveNode(someArray[i]__+__".rating"__+__j).access = 'protected ';

                    }else{}

    xfa.resolveNode(someArray[i]__+__".ratingNO").rawValue = 0;

    xfa.resolveNode(someArray[i]__+__".ratingNO").access = 'protected ';

                    }  

                }

            }

           

        }

    }

    So Limbo1, Limbo2, etc., are in the drop-down list itself and you want that they do the same thing, then simply add them to fi statement:

    If (this.rawValue == "Limbo" | this.rawValue == "Limbo 1" | this.rawValue == "Limbo 2")

  • Batch Automation: Added the video with a script

    Hello

    I'm starting a project where I want to write a thing file/script/a batch that will allow me to add a list of new or existing video clips to a file first.

    I would also add an annotation.

    For example, I have 300 video clips in different folders. Each of them has a text file with a text that I would like to overlay for the first ten seconds of each video clip. I basically want to run the script/batch file and have the project to load 300 clips in the order with overlays of text with each folder becomes a different chapter.

    How would I go to do this?

    Can you point me to some resources that may help me?

    Thank you

    Robert

    Complete script was recently added to Photoshop. Maybe there is something in the works of PrPro, but none of us know him yet. If they add it, I hope it is better respected than the transcription function, which seems to run on about 1% of 1% of all possible files.

    This is the feature request form.

    Good luck

    Hunt

  • Added a timeout for a write to measure file operation?

    Hello

    I have a question that I think will produce a very simple and direct answer, but I do not know how to approach it.  I write data to a file of measures LabVIEW and am allowing writing custom Subvi file with a simple Boolean button (i.e. when we click the button data are saved and vice versa).  Instead of having to click the button a second time to stop recording data, I would like that it resets automatically after a certain period of time so that all my files end up being the same size and scale.  I'd like to think that all I have to do is use one of the time functions (functions-> programming-> Timing), but I don't know which.  Any help will be appreciated.

    Thank you

    bsteinma

    That's where.  That's what the button labeled 'Save' does.  You just need your file write code in the structure of matter as well.

  • Adding a substring in a script of Essbase calc

    All,

    I need to do something a little unusual. I need to take the value of a member account and assign it to another, using part of the name of the account member.

    For example:


    Difficulty ("fy12', 'jan', 'real')

    "001")

    "PostAllocated"->"995"->"995_In"->"997_Out"->"* ACCOUNT_XXX *" = "PostAllocated"->"995"->"995_In"->"997_Out"->"* ACCOUNT_XXX *" +.
    ("Run1"->"allotted in advance"-> "000"->"IC_InLoadMember"->"IC_OutLoadMember"->"APLoadMember") * ("Run1"->"PercentAllocated"-> "000"->"001_AP"->"995_In"->"997_Out"->"NA_Entity"->"AcctLoadMember");

    )

    endfix

    where "ACCOUNT_XXX" is where I'd like it to be 58321_XXX, for example. It will not be corrected on all specific accounts, it will apply to all accounts, so in this case, we want that she take the substring of the left side of the name of the Member account and apply it to membername_XXX, another account.


    Thanks in advance!

    Hi, probably, you need this syntax, and you can put inside the dimensional cross

    @MEMBER (@Concatentate (@Name (@CurrMbr ("Account")), "_xxx"))

    Juan Carlos

  • adding to apex star rating script

    Hello everyone,
    Wondering if anyone has an idea how can I add a star to my apex application, these stars of note as the stars exist on the Web site rate youtube videos.
    Best regards
    Abdul Alkhateeb

    Published by: dtabed on March 4, 2009 10:50

    Abdul,

    When you say that it doesn't take any measure, do you mean on the page in your application or example? On the demo site, if you hit a rating of 5 or 1, a lot of times you finally see update. Of course, you can always replace the text with stars but get the text first working...

    The process must be a level application process. You can find them in the shared components of your application.

    Kind regards
    Dan

    http://danielmcghan.us
    http://sourceforge.NET/projects/tapigen

  • Adding several fields - Script

    Hello

    I have several fields added in a batch processing script that works great except for the last field created in the script called "TodayDate2".

    This field is not added to the document.

    Can someone please look at and advise a possible solution with my script?

    Dynamically create signature fields

    var this.numPages = NUMPAGES;
    for (var i = 0; i < numpages; i ++)


    var f = this.addField ("prepared Signature", "signature", 1,
    [320, 660, 450, 640]) ;

    var g = this.addField ("Signature of revision", "signature", 1)
    [320, 630, 450, 610]) ;

    var h = this.addField ("approved Signature", "signature", 1)
    [320, 600, 450, 580]) ;

    Create the text field for the current date

    var this.numPages = NUMPAGES;
    for (var i = 0; i < numpages; i ++)


    var f = this.addField ("TodayDate1", "text", 1,
    [460, 660, 540, 640]) ;
    f.userName = "today's Date".
    f.Value = 'auto update';
    f.ReadOnly = true;
    f.textSetFieldLabel ("today's date will be entered at the signature");

    var j = this.addField ("TodayDate2", "text", 1,
    [460, 600, 540, 640]) ;
    j.userName = "today's Date".
    j.Value = 'auto update';
    j.ReadOnly = true;
    j.textSetFieldLabel ("today's date will be entered at the signature");


    Why did you use a loop on all pages when you add the fields to the second page?

    I can't get an error using the code f.setAction.

  • Workflow started by the script fails to get the parameter passed securestring

    Hello

    I use a script (linux) to start a workflow ( defined by software for the script ;-) thank This mechanism works very well.

    However, yesterday we removed an input parameter in a workflow of some (and also deleted from the script) and now it fails.

    Before the change, the input parameters were: vmName (String), vmUser (String), vmPassword (SecureString)

    After the change, the input parameters are: vmName (String), vmPassword (SecureString)

    In the script, I can add statements to prove that the password has a value and that it is past.

    In the workflow, I've added a task containing a script that is executed first and shows that the value of the vmPassword input parameter is empty.

    The output xml from script of appeal shows also that the value parameter is 'lost '...

    See the definition of setting correct for vmName on lines 11 and 12.

    See a definition of parameter incorrect for vmPassword on line 13 - the part missing "secret < SecureString > < \SecureString >...

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <workflow-execution  href="https://ehc3-vco2.ehc.ssev.local:8281/vco/api/workflows/fe59b484-ec21-4028-8a32-5e434b4139c2/executions/ff8080814e0272b6014eadc7c37424fb/">
    <relations>
    <link href="https://ehc3-vco2.ehc.ssev.local:8281/vco/api/workflows/fe59b484-ec21-4028-8a32-5e434b4139c2/executions/" rel="up"/>
    <link href="https://ehc3-vco2.ehc.ssev.local:8281/vco/api/workflows/fe59b484-ec21-4028-8a32-5e434b4139c2/executions/ff8080814e0272b6014eadc7c37424fb/" rel="remove"/>
    <link href="https://ehc3-vco2.ehc.ssev.local:8281/vco/api/workflows/fe59b484-ec21-4028-8a32-5e434b4139c2/executions/ff8080814e0272b6014eadc7c37424fb/logs/" rel="logs"/>
    <link href="https://ehc3-vco2.ehc.ssev.local:8281/vco/api/workflows/fe59b484-ec21-4028-8a32-5e434b4139c2/executions/ff8080814e0272b6014eadc7c37424fb/state/" rel="state"/></relations>
    <id>ff8080814e0272b6014eadc7c37424fb</id>
    <state>failed</state>
    <input-parameters>
    <parameter type="string" name="vmName" scope="local">
    <string>vm093</string></parameter>
    <parameter type="SecureString" name="vmPassword" scope="local"/></input-parameters>
    <output-parameters/>
    <start-date>2015-07-20T19:23:46.932-04:00</start-date>
    <end-date>2015-07-20T19:23:48.070-04:00</end-date>
    <started-by>[email protected]</started-by>
    <name>Add Agent</name>
    <content-exception>; nested exception is:
            java.io.IOException: java.io.IOException: Non nillable element 'password' is null. (Dynamic Script Module name : addAgent#32)</content-exception>
    <current-item-display-name>Add Agent</current-item-display-name></workflow-execution>
    
    

    Anyone seen elsewhere and - especially - able to fix it? :-)

    Thank you

    Ed

    It turns out that, in the XML input, which is passed to the server vCO, the password parameter type spec can be , but the definition of its value must be specified using ....

    For example:

                    
                            secret
                    
    

    Lesson learned...

    Ed

  • PowerCLI - an element with the same key has already been added ERROR

    Hello

    I opened a case with VMware on a problem using PowerCLI. And pretty well, they said that they do not support scripts... But the error is not related to any script. It is related to the first command I run against one of our Vcenter and we have 6 of them.

    Everything worked well until we went from 4.1 to 5.1

    I can connect to our VCenter fine, but the first command always give an error and fail to the powercli but the task still occur in vCenter.

    When it gets ugly, is we have several powershell script to maintain and automate our environment but now these script fail.

    Example, we have a script to deploy the VM model and then configure the appropriate hardware configuration and add Notes and custom attributes. But the script fails after that deployment so the rest will not run. It will be possible that deploy us to the first virtual machine.

    So for 'Band-aid' question, I added a line to my script to start a virtual dummy machine, to make sure that what is in the script will work fine.

    Error:

    PowerCLI C:\Program Files\VMware\Infrastructure\vSphere PowerCLI > start-vm vm - Server-m46

    Start-VM: 2013/06/26 11:57:05 Start-VM an element with the same key has already been added.

    Online: 1 character: 9 + start-vm < < < <-vm server-m46 + CategoryInfo: NotSpecified: (:)) [start-VM], ViError + FullyQualifiedErrorId: Client20_VMServiceImpl_StartVM_ViError, VMware.VimAutomation.ViCore.Cmdlets.Commands.StartVM)

    As far as I know, done to the PowerCLI VMware supports.

    I don't think they support the client script debugging, but the product PowerCLI itself is supported.

    I created a few calls myself in the past.

    What you see is a known problem, there are a few discussions in this community who has something similar.

  • Script errors and a question

    //Created by Daryl R. Smith
    //This is the tab for Totes
    
    #target illustrator
    
    var thisDoc = app.activeDocument;
    
    if (thisDoc.selection.length > 0)
    {
    
    var w = new Window ("dialog", "Choose Totes Template", undefined, {closeButton: false});
    w.alignChildren = "right";
    
                  w.onShow = function()
                    {  
    
                        for(var i=0; i<totes1.children.length; i++)
                {  
                    var thisPanel2 = totes1.children[i];  
                    thisPanel2.originalLocation = [thisPanel2.location[0], thisPanel2.location[1]];  
                }//end for
            
            }//end on show function
        
    var tpanel = w.add ("tabbedpanel");
    tpanel.size = [400, 520]; 
    
    
    //**********************************************************************************************************************************************************
    //******************************************************Section to setup the Totes Tab******************************************************************
    //**********************************************************************************************************************************************************
    
    //creates the Totes Tab
    var totesTab = tpanel.add ("tab", undefined, "Available Totes");
    totesTab.orientation = "column";
    
    //Creates first Row Group for Totes, contains panels 1,2 and 3
    var TotesGroup = totesTab.add("group",undefined);
            TotesGroup.orientation = "row";
            TotesGroup.alignChildren = "left";
    
    //first Totes Panel
    var totes1 = TotesGroup.add ("panel", undefined, "");
    totes1.alignChildren = "left";
    totes1.size = [300,480];
    
    
    var docSelection = app.activeDocument.selection;
    var newGroup = app.activeDocument.groupItems.add();
    
    for ( i = 0; i < docSelection.length; i++ ) {
       var newItem = docSelection[i] ();
    newItem.moveToEnd( newGroup );
    }
        
       alert (thisDoc.selection.length)
    
    GetToteTempNames()
    
    function GetToteTempNames()
    {  
        
        //Replace this address for the "toteTempPath" to the folder that has all the templates it in it, then the for loop will place them all
        //into a radio button array for the user to choose which one they want.  This updates everytime that this script is ran so if
        //one if removed or added it will show up reducing the amount of required time needed to update the script.
        //when replaced make sure to change the \ marks to / marks or it will not work.
        
      var toteTempPath = Folder ("Z:/  Vitronic Master Templates/STE2 Templates/TOTES & BAGS");   
      var toteTempFiles = toteTempPath.getFiles();  
      var TotenamesArr = [];  
      for(var i=0; i<toteTempFiles.length; i++){  
      var thisToteFile = toteTempFiles[i];  
      TotenamesArr.push(thisToteFile.displayName); 
      }  
    
      return TotenamesArr;  
    }  
    var totesarr1 = GetToteTempNames();
    
            for(var i=0; i<totesarr1.length; i++){  
                var lbl = totes1.add("radiobutton", undefined, totesarr1[i]);  
            }  
        
            var scrl = TotesGroup.add('scrollbar'); scrl.size = [20, 480];  
              
            scrl.onChange = scrl.onChanging = function()
            {  //start function
                for(var i=0; i<totes1.children.length; i++)
                {  //start for
                    var thisPanel2 = totes1.children[i];  
                    var xLoc = thisPanel2.originalLocation[0];  
                    var yLoc = thisPanel2.originalLocation[1];  
                    thisPanel2.location=[xLoc, yLoc-((this.value/100) * ((totes1.children.length*27.5) - (scrl.size[1]+5)))];  
                    // These numbers are my arbitrary way of setting the y location  
                    }//end for loop
                }//end function
            
           totes1.children[0].value = true;
            
            var bottombuttons = w.add ("group");
            bottombuttons.orientation = "row"
            
            var rsize = bottombuttons.add ("panel", undefined, "Resize Artwork?");
    rsize.alignChildren = "left"
    rsize.orientation = "column"
    
    rsizeyes = rsize.add ("radiobutton", undefined, "Yes");
    rsizeno  = rsize.add ("radiobutton", undefined, "No");
    
    rsize.children[1].value = true;
    
    
    var kbottombuttons = bottombuttons.add ("group", undefined, "")
    kbottombuttons.orientation = "column"
    kbottombuttons.add ("button", undefined, "Ok");
            
    
     //**********************************************************************************************************************************************************
    //********************This section is for the functions to output your choice then run the function depending on the choice you made****************
    //**********************************************************************************************************************************************************
    
    if (w.show () == 1)
    {
        
    var templateselected = selected_rbutton
    
    var requestedtemplate = selected_rbutton (totalgroups)
    
    var confirmed = confirm ("You picked [ " + selected_rbutton (totalgroups) +" ]"+ "\nYou picked [ " + questionResize (rsizechoice) + " ] to resize" + "\n" +"\nContinue?");
            confirm.noAsDflt == false;
            
            if (confirmed == true)
            {
                
                
                copy();
                openTemp ();
                paste();
                centerArt ();
                resizeart ();
                savefile ()
               //need to wait for the save script to finish before it does the put name so that if the user changes the file name from the save pallet it will be reflected
               //in the putname function.
               
               wait = savefile();
    while(!wait) {
        //wait = false; // this is just killing time  
        // so is this
        a++;     
          
        if (a>1000) break; // guard against infinite loop  
    }  //end wait
               
                putname ();
                
             } /*end if */ else
         {
             alert ("You chose not to continue, script stopped")
             }//end else
    }//end if OK
    
    
    //**********************************************************************************************************************************************************
    //*********This section is for the function to check which option for resize gets pressed and returns the text to a variable for output******************
    //**********************************************************************************************************************************************************
    
    var rsizechoice = [rsize]
    
    function questionResize (rsizechoice)
    {//start function
    //when choice is pressed return choice text for variable output    
    for (var i = 0; i < rsize.children.length; i++)
    {
    if (rsize.children[i].value == true)
    return rsize.children[i].text;
    }//end for
    }//end function QuestionResize
    
    
    //**********************************************************************************************************************************************************
    //***************************************************************This is the section that will center the artwork ******************************************
    //**********************************************************************************************************************************************************
    
         var thisDoc = app.activeDocument;
        thisDoc.rulerOrigin = [0,0];  //  Sets the coordinates of the artboard to the lower left hand corner of the document.
        thisDoc.pageOrigin = [0,0];  //  This makes sure a valid reference point is used for different sized documents.
        
        function centerArt()
       {   
           var thisdoc = app.activeDocument;  
            var selecteditem = app.activeDocument.selection;
            var hasDocCoords = app.coordinateSystem == CoordinateSystem.ARTBOARDCOORDINATESYSTEM;
            
            
            var p = thisdoc.pageItems;  
            for (var i = 0, l = p.length; i < l; i++) {  
                var pID = p[i];  
                if (pID.guides == true) {  
                    var guideBox = pID  
                }  
            }   
            var wNum = guideBox.width;  
            var hNum = guideBox.height;
            var swNum = selecteditem.width;
            var shNum = selecteditem.height;
            
            var sxOffset = (swNum/2);
            var syOffset = (shNum/2);
            var xOffset = (wNum/2);
            var yOffset = (hNum/2);
            
            
            var xNum = guideBox.position[0]+xOffset;  
            var yNum = guideBox.position[1]-yOffset; 
            
            var guideXCenter = xNum-sxOffset;
            var guideYCenter = yNum+syOffset;
            
            var sxNum = selecteditem.position[0]+sxOffset;
            var syNum = selecteditem.position[1]-syOffset;
            
            //to test your script for position un annotate the two alerts below
            
                   alert("GuideBox Data:\nWidth: "+wNum+"\nHeight: "+hNum+"\nX Position: "+xNum+"\nY Position: "+yNum); 
                    alert ("Selected object Data:\nWidth: "+swNum+"\nHeight: "+shNum+"\nX Position: "+sxNum+"\nY Position: "+syNum);
                   
                   
            //changes the position of the selected artwork to the center of the guide box.
            app.activeDocument.selection[0].position = [guideXCenter, guideYCenter]    
        }//end centerart
    
       function resizeart()
    {
       if (questionResize (rsizechoice) == "Yes")
       {
            for (var i = 0; i < app.activeDocument.pageItems.length; i++) 
            {  
                  
                if (app.activeDocument.pageItems[i].guides == true) {  
                    var guideBoxSize = app.activeDocument.pageItems[i];  
                }  //end if
            }   //end for
            var guideW = guideBoxSize.width;  
            var guideH = guideBoxSize.height;
            
            var itemW = app.activeDocument.selection.width;
            var itemH = app.activeDocument.selection.height;
            
             //to test your script for resize un annotate the two alerts below
             
            alert ("guide is this tall " + guideH + "\nguide is this wide " + guideW);
            alert ("item is this tall " + itemH + "\nitem is this wide " + itemW);
            
            var artWidth = itemW;
            var artHeight =itemH;           
    
        if (artWidth > artHeight)
            {
               var a = (guideW/artWidth)*100;
               app.activeDocument.selection[0].resize(a,a);
             }   
        if (artHeight > artWidth)     
            {
               var b = (guideH/artHeight)*100;
               app.activeDocument.selection[0].resize(b,b);
             }
         
     var artWidth2 = itemW;
    var artHeight2 =itemH;    
    
     if (artHeight2 > guideH)
        {
           var c = (guideH/artHeight2)*100;
          app.activeDocument.selection[0].resize(c,c);
          }
            
    
         }//end if doresize
    }//end function resizeart
    
    function putname ()
    {
      
      var thisDoc = app.activeDocument;
            thisDoc.rulerOrigin = [0,0];
            thisDoc.pageOrigin = [0,0];
      
      var filename = app.activeDocument.name.replace(/\.[^\.]+$/, '');
      var createdate = app.activeDocument.modified;
      
      var  theDate = new Date();
            var day = theDate.getDate();
            var month = theDate.getMonth() + 1;
            var year = theDate.getFullYear();
            var hours = theDate.getHours();
            var min = theDate.getMinutes();
                if (min < 10)
                    min = ("0" + min);
            var morn;
                if (hours >= 12)
                    {
                        hours = hours-12;
                        morn = " PM";
                    }
                else
                    morn = " AM"
    
    var saveDate = (month + "-" + day + "-" + year + "    " + hours + ":" + min + morn );
      
      
      
    
      var nameTextFrame = thisDoc.textFrames.add();
        nameTextFrame.contents = globalartistname + "\n" + filename + "\n" + saveDate;  
        nameTextFrame.top = 1000;
        nameTextFrame.left = 100;
        nameTextFrame.filled = true; 
        nameTextFrame.alignment = "center";
        
        }//end put name
    
    function savefile ()
    {
        
        //change this folder location for the "savescript" variable to the one where the location of the save script is located on the server, 
        //This save script is for the pallet that will pop up and list the different save options, not the individual save scripts themselves.
        
            var savescript =  new File("S:/Art/ArtDept/Illustrator JS Palette/Scripts/Art Share Server/Save/Save Option Pallet");
                savescript.open("r");      
           var bt = new BridgeTalk;
                bt.target = "illustrator";          
           var script = savescript.read();
                savescript.close();               
           bt.body = script;
           bt.send();  
           
           if (saved = true)
           {
               alert("File saved")
            }
           
           if (saved == false)
           {
               alert ("File not saved")
               }
           
           return true;
     }      
    
    
    //**********************************************************************************************************************************************************
    //********************This section is for the functions to check which button gets pressed and returns the text to a variable for output ****************
    //**********************************************************************************************************************************************************
    
    
    //all radiobutton groups must be pressent in this array
    var totalgroups = [totes1]
    
    //this function checks each group for the 1 radio button is clicked then returns its text
    function selected_rbutton (totalgroups)
    {//start function to check buttons
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Totes tab buttons
    
    //when totes1 is pressed return text for output
    for (var i = 0; i < totes1.children.length; i++)
    {
    if (totes1.children[i].value == true)
    {
    return totes1.children[i].text;
    }//end if
    
    }//end if
    }//end for
    
    //////////////////////////////////////////////////////////////////////////open template 
    
    function openTemp()
     {
         //change the folder location of the templates here but leave the last section that is black, this will allow the script to open which
         //ever template they chose from the radiobuttons.  This location should be the same as the toteTempPath above but reduces the
         //chance for something to break by pulling the address here again instead of from the variable near the begining of the script.
         
     var gettotetemp = new File("Z:/  Vitronic Master Templates/STE2 Templates/TOTES & BAGS/" + selected_rbutton (totalgroups));
    
    open(gettotetemp);
    
    }//end open temp function
    
    }//end if selection check
    
    
    else
    {
        alert("Please select the artwork.");
      } // end else selection check 
    

    This is my entire script with notes to help, my script does not work it telling me there is an error on a different line every time that I run and the line indicating the error is on is something simple like .alignChildren = 'left '; I'm at a loss as to why it has stopped working.

    My question is, after I get it going again once I made a mistake when I wrote this, because I was looking at him with an element of single path to make sure that he moved to the model, resized and saved but when I try with a bunch of different objects, it breaks even if try to group them all together first.  It will not be the entire selection copy(), so I added a section to the script near the 50 line that takes all the elements of the path of the selection and puts them in a group.  I'm going on this and that and running it and test it because I had that done and I can't make it work, I am at my wits end and looking for help.

    What I need to do is the following in the correct order;

    Copy();

    openTemp ();

    Paste();

    centerArt ();

    resizeart ();

    SaveFile)

    putname ();

    separately each function works fine but when I try and put together something breaks.  I'll post the script that I use for the savefile() in the next post.

    most likely, the problem is copy(), paste(), the dough isn't reliable, instead, you can duplicate the object to a target document, then first, when you open your model, return a reference to, so you can use it to move the duplicate group.

    See my comments with @, I have use savefile() or putname(), I'm focused on resize() and center()

    //Created by Daryl R. Smith
    //This is the tab for Totes 
    
    #target illustrator 
    
    var thisDoc = app.activeDocument; 
    
    if (thisDoc.selection.length > 0)
    { 
    
    var w = new Window ("dialog", "Choose Totes Template", undefined, {closeButton: false});
    w.alignChildren = "right"; 
    
                  w.onShow = function()
                    {   
    
                        for(var i=0; i1000) break; // guard against infinite loop
    }  //end wait 
    
                //putname ();  // commented out for testing purposes only @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
            } /*end if */ else
        {
            alert ("You chose not to continue, script stopped")
            }//end else
    }//end if OK 
    
    //**********************************************************************************************************************************************************
    //*********This section is for the function to check which option for resize gets pressed and returns the text to a variable for output******************
    //********************************************************************************************************************************************************** 
    
    var rsizechoice = [rsize] 
    
    function questionResize (rsizechoice)
    {//start function
    //when choice is pressed return choice text for variable output
    for (var i = 0; i < rsize.children.length; i++)
    {
    if (rsize.children[i].value == true)
    return rsize.children[i].text;
    }//end for
    }//end function QuestionResize 
    
    //**********************************************************************************************************************************************************
    //***************************************************************This is the section that will center the artwork ******************************************
    //********************************************************************************************************************************************************** 
    
        var thisDoc = app.activeDocument;
        thisDoc.rulerOrigin = [0,0];  //  Sets the coordinates of the artboard to the lower left hand corner of the document.
        thisDoc.pageOrigin = [0,0];  //  This makes sure a valid reference point is used for different sized documents. 
    
        function centerArt()
      {
          var thisdoc = app.activeDocument;
            //var selecteditem = app.activeDocument.selection; // [error] this throws no error here, but it does down below, selection returns an Array @@@@@@
            var selecteditem = app.activeDocument.groupItems[0]; // since you have duplicated a group, just get a reference to it @@@@@@@@@@@@
            selecteditem.selected = true; // you don't have to select items to work with them, I just selected to continue Debugging your script @@@@@@@@
            var hasDocCoords = app.coordinateSystem == CoordinateSystem.ARTBOARDCOORDINATESYSTEM; 
    
            var p = thisdoc.pageItems;
            for (var i = 0, l = p.length; i < l; i++) {
                var pID = p[i];
                if (pID.guides == true) {
                    var guideBox = pID
                }
            }
            var wNum = guideBox.width;
            var hNum = guideBox.height;
            var swNum = selecteditem.width;
            var shNum = selecteditem.height; 
    
            var sxOffset = (swNum/2);
            var syOffset = (shNum/2);
            var xOffset = (wNum/2);
            var yOffset = (hNum/2); 
    
            var xNum = guideBox.position[0]+xOffset;
            var yNum = guideBox.position[1]-yOffset; 
    
            var guideXCenter = xNum-sxOffset;
            var guideYCenter = yNum+syOffset; 
    
            var sxNum = selecteditem.position[0]+sxOffset;
            var syNum = selecteditem.position[1]-syOffset; 
    
            //to test your script for position un annotate the two alerts below 
    
                  alert("GuideBox Data:\nWidth: "+wNum+"\nHeight: "+hNum+"\nX Position: "+xNum+"\nY Position: "+yNum);
                    alert ("Selected object Data:\nWidth: "+swNum+"\nHeight: "+shNum+"\nX Position: "+sxNum+"\nY Position: "+syNum); 
    
            //changes the position of the selected artwork to the center of the guide box.
            //app.activeDocument.selection[0].position = [guideXCenter, guideYCenter]; // use the group reference instead @@@@@@@@@@@@@@@@@
            selecteditem.position = [guideXCenter, guideYCenter]; // selecteditem is the duplicated group @@@@@@@@@@@@@@@@@@@@@@
        }//end centerart 
    
      function resizeart()
    {
      if (questionResize (rsizechoice) == "Yes")
      {
            for (var i = 0; i < app.activeDocument.pageItems.length; i++)
            {   
    
                if (app.activeDocument.pageItems[i].guides == true) {
                    var guideBoxSize = app.activeDocument.pageItems[i];
                }  //end if
            }  //end for
            var guideW = guideBoxSize.width;
            var guideH = guideBoxSize.height; 
    
            //var itemW = app.activeDocument.selection.width;  // selection returns an array @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            //var itemH = app.activeDocument.selection.height;  // same as above @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            var itemW = app.activeDocument.selection[0].width;
            var itemH = app.activeDocument.selection[0].height; 
    
            //to test your script for resize un annotate the two alerts below 
    
            alert ("guide is this tall " + guideH + "\nguide is this wide " + guideW);
            alert ("item is this tall " + itemH + "\nitem is this wide " + itemW); 
    
            var artWidth = itemW;
            var artHeight =itemH;           
    
        if (artWidth > artHeight)
            {
              var a = (guideW/artWidth)*100;
              app.activeDocument.selection[0].resize(a,a);
            }
        if (artHeight > artWidth)
            {
              var b = (guideH/artHeight)*100;
              app.activeDocument.selection[0].resize(b,b);
            } 
    
    var artWidth2 = itemW;
    var artHeight2 =itemH;     
    
    if (artHeight2 > guideH)
        {
          var c = (guideH/artHeight2)*100;
          app.activeDocument.selection[0].resize(c,c);
          } 
    
        }//end if doresize
    }//end function resizeart 
    
    function putname ()
    { 
    
      var thisDoc = app.activeDocument;
            thisDoc.rulerOrigin = [0,0];
            thisDoc.pageOrigin = [0,0]; 
    
      var filename = app.activeDocument.name.replace(/\.[^\.]+$/, '');
      var createdate = app.activeDocument.modified; 
    
      var  theDate = new Date();
            var day = theDate.getDate();
            var month = theDate.getMonth() + 1;
            var year = theDate.getFullYear();
            var hours = theDate.getHours();
            var min = theDate.getMinutes();
                if (min < 10)
                    min = ("0" + min);
            var morn;
                if (hours >= 12)
                    {
                        hours = hours-12;
                        morn = " PM";
                    }
                else
                    morn = " AM" 
    
    var saveDate = (month + "-" + day + "-" + year + "    " + hours + ":" + min + morn ); 
    
      var nameTextFrame = thisDoc.textFrames.add();
        nameTextFrame.contents = globalartistname + "\n" + filename + "\n" + saveDate;
        nameTextFrame.top = 1000;
        nameTextFrame.left = 100;
        nameTextFrame.filled = true;
        nameTextFrame.alignment = "center"; 
    
        }//end put name 
    
    function savefile ()
    { 
    
        //change this folder location for the "savescript" variable to the one where the location of the save script is located on the server,
        //This save script is for the pallet that will pop up and list the different save options, not the individual save scripts themselves. 
    
            var savescript =  new File("S:/Art/ArtDept/Illustrator JS Palette/Scripts/Art Share Server/Save/Save Option Pallet");
                savescript.open("r");
          var bt = new BridgeTalk;
                bt.target = "illustrator";
          var script = savescript.read();
                savescript.close();
          bt.body = script;
          bt.send();   
    
          if (saved = true)
          {
              alert("File saved")
            } 
    
          if (saved == false)
          {
              alert ("File not saved")
              } 
    
          return true;
    }       
    
    //**********************************************************************************************************************************************************
    //********************This section is for the functions to check which button gets pressed and returns the text to a variable for output ****************
    //********************************************************************************************************************************************************** 
    
    //all radiobutton groups must be pressent in this array
    var totalgroups = [totes1] 
    
    //this function checks each group for the 1 radio button is clicked then returns its text
    function selected_rbutton (totalgroups)
    {//start function to check buttons
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Totes tab buttons 
    
    //when totes1 is pressed return text for output
    for (var i = 0; i < totes1.children.length; i++)
    {
    if (totes1.children[i].value == true)
    {
    return totes1.children[i].text;
    }//end if 
    
    }//end if
    }//end for 
    
    //////////////////////////////////////////////////////////////////////////open template 
    
    function openTemp()
    {
        //change the folder location of the templates here but leave the last section that is black, this will allow the script to open which
        //ever template they chose from the radiobuttons.  This location should be the same as the toteTempPath above but reduces the
        //chance for something to break by pulling the address here again instead of from the variable near the begining of the script. 
    
    var gettotetemp = new File("Z:/  Vitronic Master Templates/STE2 Templates/TOTES & BAGS/" + selected_rbutton (totalgroups));
    //var gettotetemp = new File("c:/temp/templates/" + selected_rbutton (totalgroups)); 
    
    var template = open(gettotetemp);  // get a reference to the template @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
      return template; // return the open template document @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    }//end open temp function 
    
    }//end if selection check 
    
    else
    {
        alert("Please select the artwork.");
      } // end else selection check
    
  • How to script Illustrator to get a library of shades PANTONE color chart

    I've searched high and low, but can't find the answer to this question.  Quite simply, I need a script to convert all spot colors PANTONE an Illustrator file in the PANTONE BRIDGE book CMYK equivalents.

    To do this, however, it seems necessary for the script to search through the various books PANTONE swatch library color to find the one I'm looking for.  I have a string that I need, but I don't see how ExtendScript can perform a search in the libraries of different shades (or even just the a library - 'Coated + PANTONE Color Bridge (UN)'.  I can't just to watch the nuances that are in the main "Swatches" palette using Document.swatches.  Any ideas?

    I'm afraid that code gives me an "MRAP" error in the ESTK.  But, I actually found a way around the problem by using your original suggestion to have a separate file with all color swatches Pantone, added to this, then the script can enter this shade, grasp its getInternalColor, turn it into a CMYKColor, then assign the extracted values of getInternalColor of four properties of the colors of the new shade.

    Yes, it is a bit of a roundabout method and takes a lot of code, but it does the job quickly, and that's what I need.  Here is the code I have (the "workDoc" has already been assigned to the currently open document.):

    // To finish up, we delete the other two layers beyond the first and then save the file for use as digital printing file.
    // First, delete the two layers.
    workDoc.layers[2].locked = false;
    workDoc.layers[2].remove();
    workDoc.layers[1].locked = true;
    //          workDoc.layers[1].remove();
    
    // Before grouping and mirroring all of the artwork, it's time to convert all spot colors to process
    // using the PANTONE Bridge book as a reference.
    
    // First, let's open up the reference document that has all of the PANTONE Bridge book colors as swatches.
    var bridgeDoc = app.open(File("~/Documents/PantoneBridge.ai"));
    
    // Since attempting to colorize textFrame objects seems to crash Illustrator, we're best off just converting them all to paths anyway.
    var texts = workDoc.textFrames;
    for (var t = 0; t < texts.length; t++)
    {
              texts[t].createOutline();
    }
    
    var items = workDoc.pathItems;
    for (var i = 0; i < items.length; i++)
    {
              var myPath = items[i];
              if (myPath.fillColor .typename == "SpotColor")
              {
                        try {var procSwatch = workDoc.swatches.getByName(myPath.fillColor.spot.name + "P");}
                                  catch (e) {var procSwatch = addProcSwatch(myPath.fillColor.spot.name + "P", bridgeDoc.swatches);}
                        changePaths(myPath.fillColor.spot.name, procSwatch.color);
              }
    
              if (myPath.fillColor.typename == "GradientColor")
              {
                        for (var g = 0; g < myPath.fillColor.gradient.gradientStops.length; g++)
                        {
                                  var gStop = myPath.fillColor.gradient.gradientStops[g].color;
                                  if (gStop.typename == "SpotColor")
                                  {
                                            try {var procSwatch = workDoc.swatches.getByName(gStop.spot.name + "P");}
                                                      catch (e) {var procSwatch = addProcSwatch(gStop.spot.name + "P", bridgeDoc.swatches);}
                                            changePaths(gStop.spot.name, procSwatch.color);
                                  }
                        }
              }
    
              if (myPath.strokeColor .typename == "SpotColor")
              {
                        try {var procSwatch = workDoc.swatches.getByName(myPath.strokeColor.spot.name + "P");}
                                  catch (e) {var procSwatch = addProcSwatch(myPath.strokeColor.spot.name + "P", bridgeDoc.swatches);}
                        changePaths(myPath.strokeColor.spot.name, procSwatch.color);
              }
    
              if (myPath.strokeColor.typename == "GradientColor")
              {
                        for (var g = 0; g < myPath.strokeColor.gradient.gradientStops.length; g++)
                        {
                                  var gStop = myPath.strokeColor.gradient.gradientStops[g].color;
                                  if (gStop.typename == "SpotColor")
                                  {
                                            try {var procSwatch = workDoc.swatches.getByName(gStop.spot.name + "P");}
                                                      catch (e) {var procSwatch = addProcSwatch(gStop.spot.name + "P", bridgeDoc.swatches);}
                                            changePaths(gStop.spot.name, procSwatch.color);
                                  }
                        }
              }
    }
    
    var rasters = workDoc.rasterItems;
    var bitmapFound = false;
    var checkForTint = false;
    for (var i = 0; i < rasters.length; i++)
    {
              var myRaster = rasters[i];
              if (myRaster.channels == 1 && myRaster.colorizedGrayscale) {if (myRaster.colorizedGrayscale) {bitmapFound = true;}}
              else if (myRaster.channels < 4 && myRaster.colorizedGrayscale)
              {
                        if (/^PANTONE/.test(myRaster.colorants[0]))
                        {
                                  try {var rastSwatch = workDoc.swatches.getByName(myRaster.colorants[0] + "P");}
                                            catch (e) {var rastSwatch = addProcSwatch(myRaster.colorants[0] + "P", bridgeDoc.swatches);}
                                  changeRasters(myRaster.colorants[0], rastSwatch.color);
                        }
              }
    }
    
    if (bitmapFound) {alert("Found at least one colorized raster image in the Digital file.  Please manually change their colorants to CMYK.\nPlease see Chris McGee for more information.");}
    if (checkForTint) {alert("At least one raster image in the art has been converted to CMYK.  However, if its former spot color was tinted less than 100%, then you will need to manually change the colorant in the Digital file to match.\nPlease see Chris McGee for more information.");}
    
    // We should be done now with the PANTONE Bridge reference document, so close that.
    bridgeDoc.close(SaveOptions.DONOTSAVECHANGES);
    app.redraw();
    
    function addProcSwatch(swatchToGet, docSwatches)
    {
              var bridgeSwatch = docSwatches.getByName(swatchToGet);
              var newSwatch = workDoc.swatches.add();
              var spotName = bridgeSwatch.color.spot.name;
              var spotValue = bridgeSwatch.color.spot.getInternalColor();
              newSwatch.color = CMYKColor;
              newSwatch.name = spotName;
              newSwatch.color.cyan = spotValue[0];
              newSwatch.color.magenta = spotValue[1];
              newSwatch.color.yellow = spotValue[2];
              newSwatch.color.black = spotValue[3];
              return newSwatch;
    }
    
    function changePaths (colorName, newColor)
    {
              var allItems = workDoc.pathItems;
              for (var j = 0; j < allItems.length; j++)
              {
                        var thisPath = allItems[j];
                        if (thisPath.fillColor.typename == "SpotColor" && thisPath.fillColor.spot.name == colorName)
                        {
                                  var thisTint = thisPath.fillColor.tint / 100;
    
                                  thisPath.fillColor = newColor;
                                  thisPath.fillColor.cyan *= thisTint;
                                  thisPath.fillColor.magenta *= thisTint;
                                  thisPath.fillColor.yellow *= thisTint;
                                  thisPath.fillColor.black *= thisTint;
                        }
    
                        if (thisPath.fillColor.typename == "GradientColor")
                        {
                                  for (var g = 0; g < thisPath.fillColor.gradient.gradientStops.length; g++)
                                  {
                                            var gStop = thisPath.fillColor.gradient.gradientStops[g];
                                            if (gStop.color.typename == "SpotColor" && gStop.color.spot.name == colorName)
                                            {
                                                      var thisTint = gStop.color.tint / 100;
                                                      gStop.color = newColor;
    
                                                      gStop.color.cyan *= thisTint;
                                                      gStop.color.magenta *= thisTint;
                                                      gStop.color.yellow *= thisTint;
                                                      gStop.color.black *= thisTint;
                                            }
                                  }
                        }
    
                        if (thisPath.strokeColor.typename == "SpotColor" && thisPath.strokeColor.spot.name == colorName)
                        {
                                  var thisTint = thisPath.strokeColor.tint / 100;
    
                                  thisPath.strokeColor = newColor;
                                  thisPath.strokeColor.cyan *= thisTint;
                                  thisPath.strokeColor.magenta *= thisTint;
                                  thisPath.strokeColor.yellow *= thisTint;
                                  thisPath.strokeColor.black *= thisTint;
                        }
    
                        if (thisPath.strokeColor.typename == "GradientColor")
                        {
                                  for (var g = 0; g < thisPath.strokeColor.gradient.gradientStops.length; g++)
                                  {
                                            var gStop = thisPath.strokeColor.gradient.gradientStops[g];
                                            if (gStop.color.typename == "SpotColor" && gStop.color.spot.name == colorName)
                                            {
                                                      var thisTint = gStop.color.tint / 100;
                                                      gStop.color = newColor;
    
                                                      gStop.color.cyan *= thisTint;
                                                      gStop.color.magenta *= thisTint;
                                                      gStop.color.yellow *= thisTint;
                                                      gStop.color.black *= thisTint;
                                            }
                                  }
                        }
              }
    }
    
    function changeRasters (colorName, newColor)
    {
              var allRasters = workDoc.rasterItems;
              for (var j = 0; j < allRasters.length; j++)
              {
                        var thisRaster = allRasters[j];
                        if (thisRaster.channels > 1 && thisRaster.channels < 4 && thisRaster.colorizedGrayscale)
                        {
                                  if (/^PANTONE/.test(thisRaster.colorants[0]) && thisRaster.colorants[0] == colorName)
                                  {
                                            thisRaster.colorize(newColor);
                                            checkForTint = true;
                                  }
                        }
              }
    }
    // That concludes all of the color-changing steps.
    

    I hope this helps someone else who is faced with this (admittedly unusual) situation.

  • After using the iphone app, I get error: "unable to get labels for the script.

    Hello

    I think that this is related to the iphone app for Adobe Story. I added some comments on my script using the application, now when I try and open my script, I get an error; "Unable to get labels for the script.

    I tried Internet Explorer 9 and the desktop application. Both produce the same error.

    The script is completed to 55 pages, so I really don't want to lose...

    Thank you

    Hi Chris,

    We have fixed the problem and shared the document with you back. You can accept the notification, copy the document into a new (to be an owner) and work on it now. Meanwhile, we will also investigate why the problem occurred at all.

    Sorry for the inconvinience.

    Kind regards

    Sunny

  • Apple/Mac by adding to the file path?

    I have the following script javascript in InDesign runnning:

    If (File.fs == "Windows") {}

    defaultPath var = new File ('\\\server\\path\\to\\file');

    } else {}

    defaultPath var = new File ("smb://server/path/to/file");

    }

    The code works correctly in Windows (the file is located on a shared Windows directory), but on a Mac, I get an error "cannot find file" and claims that is the defaultPath variable:

    / Applications/adobe InDesign CS5/scripts/XHTML for Digital Editions/smb: / server/path/to/file

    I'm confused about 2 things:

    1. Why is it by adding "/ Applications/Adobe InDesign CS5/scripts/XHTML for Digital Editions / ' path?
    2. Why is he changing smb: / / for smb: / (a slash)?

    I use the incorrect path for Mac? Is there supposed to be something else before smb: / / to identify that this is not a local path?

    Hi James,

    On a mac to access a network as follows volume...

    var myTxtFile = File("/volumes/MountedShareName/test.txt");

    myTxtFile.open ("w");

    myTxtFile.write ("Test\n");

    myTxtFile.close ();

    Alert ("Done");

    This example creates a test file on a mounted network volume...

    Hope this helps...

    John

  • Suspend the script

    I added a feature to my script that must be inserted between two already put in place of the functions - a new GUI window. Right now, if I show the window between the two functions, the rest of the script runs. However, I need the script to pause until the user clicks a button in the new window of GUI.

    Is there a function which stops the following functions to operate?

    I think you should move the second function call, as it is invoked only once the GUI.

    P

Maybe you are looking for

  • How to stop play automatically Youtube videos?

    I have no idea if it's a firefox problem or a problem add-on, but since the update yesterday, embedded YouTube videos started playing automatically. Obviously, this is not ideal because I won't be stopped whenever I visit some sites, especially when

  • Component of the malfunction on Qosmio G35

    Hi all, I'm really happy that I found this forum. I have a G35 AV600 running Xp and my component out (tv-Out) has just stopped working on me. Button works, I see a few changes in the display of the external monitor. And the Svideo works with the TV o

  • How can I change my user name in my windows photo gallery? I can not send pictures of her. Thank you

    I was not able to send pictures of my windows photo gallery. I have recentley changed border to Roadrunner servers & those I contacted on it wants to charge a price of outragus to do so. When I changed from Verizon to Frontier they accompanied me thr

  • SSM-40 IPS inspects traffic

    Hello I have an asa 5520 with AIP-SSM-40 I did the configuration of basic on the MSS and I was ok until I decided to forward traffic to IPS. I use the service on ASA-> Firewall-> rules of policy strategy and add a rule for IPS the rule has been added

  • Resizing of specific pixels using PS action

    I'm trying to automate the creation of a montage of sorts with photoshop actions.  What I want to do, is to have an action that will resize the content of the active layer to specific dimensions.  This means that if the image is too small, it will ex